首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未解决的Selenium单击<li>中的href

未解决的Selenium单击<li>中的href
EN

Stack Overflow用户
提问于 2020-09-22 04:19:02
回答 1查看 67关注 0票数 0

关于"var links =driver.FindElement(By.XPath(“/html/body/div2/div1/div/div1/div/nav/ol/li3”));“”的错误

我在单击li标记中的selenium链接(var链接)时遇到了麻烦,尽管它可以手动单击。我已经尝试了许多方法,但还没有找到一个有效的方法;搜索已经存在的堆栈溢出问题也没有帮助。

这是我得到的错误,不管我使用哪种选择器类型OpenQA.Selenium.NoSuchElementException:‘没有这样的元素:无法定位元素

我的代码

代码语言:javascript
复制
using System;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Interactions;

    namespace BookFetcher
    {
        public static class Program
        {
            public static void Main()
            {
    
    
                IWebDriver driver = new ChromeDriver(@"C:\");
                driver.Manage().Window.Maximize();
                driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
                driver.Navigate().GoToUrl("http://xn--epik-0qa.ee/minu-konto/");
                driver.FindElement(By.XPath("//*[@id='username']")).SendKeys("");
                driver.FindElement(By.XPath("//*[@id='password']")).SendKeys("");
                driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
                driver.FindElement(By.XPath("/html/body/div[2]/div[1]/div[1]/div/div/div/div/div[1]/form/p[3]/button")).Click();
                driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
                driver.FindElement(By.XPath("/html/body/header/div/div/nav[2]/ul/li[2]/a")).Click();
                driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
                var element = driver.FindElement(By.XPath("/html/body/div[3]/div[1]/section[1]/div[3]/div[94]/p[2]/a"));
                Actions actions = new Actions(driver);
                actions.MoveToElement(element);
                actions.Perform();
                driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
                element.Click();
                driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
                var links = driver.FindElement(By.XPath("/html/body/div[2]/div[1]/div/div/div/div[1]/div/nav/ol/li[3]"));;
                driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
                links.Click();
                Console.ReadLine();
            }
        }
    }

HTML源

代码语言:javascript
复制
<div class="content-area">
        <div class="epub">
            <div class="column epub-nav">
                <div class="epub-nav-inner">
                    <div class="epub-meta">
                        <p>uid: 978-9949-559-55-8</p><p>creator: </p><p>publisher: Maurus</p><p>subject: </p>                   </div>
                                <nav epub:type="toc" id="toc">
                <ol>
                                        <li>
                        <a href="?currentPage=3">Tööraamatu kasutajale</a>
                    </li>
                                        <li>
                        <a href="?currentPage=4">1. Arvuhulgad ja avaldised</a>
                    </li>
                                        <li>
                        <a href="?currentPage=4">1.1. Arvuhulgad</a>
                    </li>
                                        <li>
                        <a href="?currentPage=7">1.2. Tehted astmete ja juurtega</a>
                    </li>

我已经寻求过一次帮助,但是提供的解决方案似乎没有解决这个问题,所以我想我应该再试一次,希望有人能帮助我。

EN

回答 1

Stack Overflow用户

发布于 2020-09-22 05:17:14

也许有一个iframe。

代码语言:javascript
复制
using System;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Interactions;

namespace BookFetcher
{
    public static class Program
    {
        public static void Main()
        {


            IWebDriver driver = new ChromeDriver(@"C:\");
            driver.Manage().Window.Maximize();
            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
            driver.Navigate().GoToUrl("http://xn--epik-0qa.ee/minu-konto/");
            driver.FindElement(By.XPath("//*[@id='username']")).SendKeys("");
            driver.FindElement(By.XPath("//*[@id='password']")).SendKeys("");
            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
            driver.FindElement(By.XPath("/html/body/div[2]/div[1]/div[1]/div/div/div/div/div[1]/form/p[3]/button")).Click();
            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
            driver.FindElement(By.XPath("/html/body/header/div/div/nav[2]/ul/li[2]/a")).Click();
            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
            var element = driver.FindElement(By.XPath("/html/body/div[3]/div[1]/section[1]/div[3]/div[94]/p[2]/a"));
            Actions actions = new Actions(driver);
            actions.MoveToElement(element);
            actions.Perform();
            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
            element.Click();
            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
            var iFrame = driver.FindElement(By.Xpath("//iframe"));
            driver.SwitchTo().Frame(iFrame);
            var links = driver.FindElement(By.XPath("//a[@href='?currentPage=4']"));
            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
            links.Click();
            Console.ReadLine();
        }
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63999439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档