首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Selenium chromedriver无法找到嵌套在类标记中的href标记

Selenium chromedriver无法找到嵌套在类标记中的href标记
EN

Stack Overflow用户
提问于 2020-09-24 09:44:57
回答 2查看 132关注 0票数 0

我使用的是selenium web驱动程序,我想要捕获或单击这个HTML作为

\<a class="sub-nav-link style-scope app-shell active" href="#/trend-analysis/tag-search"\>

我试过用Driver.findElement(By.xpath(//a[@href='#/trend-analysis/tag-search']")).click();

代码语言:javascript
复制
<div class="collapse navbar-collapse style-scope app-shell" id="navbarNav">
                <ul class="app-nav navbar-nav mr-auto style-scope app-shell">
                    <li class="nav-item style-scope app-shell">
                        <a class="nav-link p-3 px-4 style-scope app-shell" href="/#/dashboard">Dashboard</a>
                    </li>
                    <li class="nav-item style-scope app-shell">
                        <a class="nav-link py-3 px-4 style-scope app-shell active" href="/#/trend-analysis/tag-search">Trend
                            Analysis</a>
                        <ul class="sub-nav d-flex flex-row flex-nowrap list-unstyled style-scope app-shell">
                            <li class="sub-nav-item style-scope app-shell">
                                <a class="sub-nav-link style-scope app-shell active" href="#/trend-analysis/tag-search">
                                    Trend Analysis
                                </a>

误差

代码语言:javascript
复制
Unable to locate element: {"method":"xpath","selector":"//*[@href='/#/trend-analysis/tag-search']"}

我猜它没有检测到这个href,因为它隐藏在许多<a><class>标记下。请引导我。

新错误没有这样的元素:无法定位元素:{“方法”:“xpath”,“选择器”:“//li@class=‘nav-item样式-作用域app-’/acontains(@href,‘#/趋势-分析/标记-搜索’)}”

driver.findElement(By.xpath("//li[@class='nav-item style-scope app-shell']/a[contains(@href,'#/trend-analysis/tag-search')]")).click();

EN

回答 2

Stack Overflow用户

发布于 2020-09-24 20:56:44

实际上,在你的回答中,你没有第一个“这是问题吗?”

因为这是:

代码语言:javascript
复制
driver.findElement(By.xpath("//a[@href='#/trend-analysis/tag-search']")).click();

看上去很好

如果问题是#就像下面的人那样,也许这会解决这个问题:

代码语言:javascript
复制
driver.findElement(By.xpath("//li[@class='nav-item style-scope app-shell']/a[contains(@href,'#/trend-analysis/tag-search')]")).click();

希望我能帮上忙

票数 1
EN

Stack Overflow用户

发布于 2020-09-24 11:17:22

这可能算是NAA (不是回答),但我没有资格发表评论.你可以删除它,我不会生气的。

我每天都解析# URL's。如果您将查看下面的URL,您将看到关于在带有Selenium的堆栈溢出应答中使用#的一些信息。

注意:#URL中的典型用途是建立一个自引用链接,这意味着URL通常指向与您当前正在查看的页面完全相同的URL,但确切地说,指向页面上的不同位置。

如果您试图使用使用URL的代码中的X-Path语句来定位使用SeleniumX-Path语句,其中包含一个#和更多的正斜杠/dirs...字符,根据本网站,Java (AJAX)正在被调用,而且可能Selenium并没有按照X-Path语句所认为的那样看待HREF

链接站点的显著摘录:

当访问http://mywebsite.com/#/page1时,它将对传统的url http://mywebsite.com/page1执行ajax请求,获取该页面的http://mywebsite.com/page1,并将页面的内容加载到现有页面中。

长话短说:您X-Path中有一个#磅号,这意味着它是一种特殊类型的URL,可能需要特殊类型的X-Path...。(这是我实际上无法提供的答案,因为我不知道:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64043795

复制
相关文章

相似问题

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