如何点击使用其中定义的跨度找到的链接?
我发誓我已经搜索谷歌和SE几个小时,我只是找不到任何适用于我的情况。如何点击使用其中定义的跨度找到的链接?
我一直使用位于我的链接:
WebElement element = driver.findElement(By.linkText("News"));
然而,这不返回的链接(<一>标签),但返回一个< SPAN>与LINKTEXT。
这里是链接结构的样子:
<a href="________" itemprop="url" style="height: 88px; line-height: 88px;">
<span class="avia-bullet"></span>
<span class="avia-menu-text">News</span>
<span class="avia-menu-fx">
<span class="avia-arrow-wrap">
<span class="avia-arrow"></span>
</span>
</span>
<span class="dropdown_available"></span>
</a>
所以,当我这样做:element.click();
,整个浏览器与“ElementNotInteractableException”下降。我认为这可能会超时,但我给了它很多时间,但仍然失败。
我怀疑我只是不能点击< span>。
但我该如何参考他的父母(< a>)?
我想:
element=element.findElement(By.xpath("parent"));
element=element.findElement(By.xpath(".."));
对于复杂的HTML,如预期硒的默认方法是行不通的。
如何使用XPath函数不同的方法尝试:
例如,尝试下面的一个:
driver.findElement(By.xpath("//a[contains(.,'News')]")).click();
这SO后对其他道路功能的更多细节:XPath contains(text(),'some string') doesn't work when used with node with more than one Text subnode
嗯,这不会工作,因为它不是'A',它包含test = News,它是一个'Span'... – DraxDomax
我如何去你找到你的答案的元素的父母? – DraxDomax
用“。”替换“text()”。 - 现在试试。 – parishodak
你不能对span标签进行任何操作。所以最好能得到任何div/link标签,这样你就可以对它执行操作。
//span[.='News']/ancestor::a
//span[contains(.,'s')]/ancestor::a
<!-- Any of its innerHTML Text (with out case-sensitive)-->
//a[contains(.,'YY')]
<!-- Next followed child nodes. -->
//a[span[text()='News']]
//a[span='News' and @style="height: 88px; line-height: 88px;"]
<!-- Any of its child - child nodes. -->
//a[.//span[text()='SS']]
//a[[.='News'] and [.//span[contains(.,'YY')]]]
//a[span='News' and [.//span[contains(.,'YYY')]] ]
<a href="________" itemprop="url" style="height: 8px; line-height: 88px;">
<span class="avia-menu-text">News</span>
<span class="avia-menu-fx">
<span class="avia-arrow-wrap">SS
<span class="avia-arrow">YYY</span>
</span>
</span>
</a>
写的XPath你描述它:
你需要:
正在使用中它定义的范围有关系吗?
所以这里的XPath:
//a[.//span]
,并让跨度更具体:
//a[.//span[text()='News']]
或
//a[.//span[contains(@class,'avia-menu-text')][text()='News']]
您还可以添加一些规范a
元素,或这是父母的项目,以确保你fou找到正确的项目。
try element = element.findElement(By.xpath(“./ ..”)); ”。/'在xpath中表示当前节点。你需要使用./来告诉硒从当前节点找父节点:新闻 – yong