我在点击span标记内的链接文字时遇到问题。
html代码:
<div id="menu" style="width: 1752px;">
<div class="dd_menu" dd_event_id="dd_event_2">
<a class="dd_menu_menu_entry dd_menu_entry_clickable" href="javascript:void(0);" style="left: 3px; width: 111px;" dd_menu_id="0">
<a class="dd_menu_entry dd_menu_entry_clickable" href="javascript:void(0);" style="left: 114px; width: 131px;" dd_menu_id="1">
<span class="text" style="background-color: rgba(0, 0, 0, 0);">FirstMenu</span>
我需要点击“FirstMenu”文字。
我使用了xpath:.//*[@id='menu']/div/a[2]/span
它似乎不起作用。我该如何解决?
答案 0 :(得分:1)
如果您的要求是“点击链接FirstMenu”,那么您应该使用那个作为定位器。不需要乱用XPath。
driver.findElement(By.partialLinkText("FirstMenu")).click();
由于额外的.partialLinkText()
元素,span
定位器策略应考虑任何额外的空白填充。
答案 1 :(得分:0)
您的xPath返回span元素,因此您点击该范围。要使您的xpath返回一个链接,请将您的查询返回到以下内容:
//*[@id='menu']/div/a[span]
此查询返回一个“span”,其中span元素为子元素。
答案 2 :(得分:0)
尝试在xpath下面使用: -
//span[contains(.,'FirstMenu')]
如果它不起作用,那么可能存在任何框架。你需要先打开它。
如果DOM上有更多名称为FirstMenu
的元素
希望它会对你有所帮助:)。
答案 3 :(得分:0)
通过使用上面指定的相同xpath和通常的语法driver.findElement(By.xpath(&#34; // * [@ id =&#39; menu&#39;] / div /)解决了这个问题一个[2] /跨度&#34;))点击();在我给出了必须执行测试用例的命令并使用@Test(priority = something)并给出一些隐含的等待之后。 谢谢大家的建议。 问候, 罗马
答案 4 :(得分:-2)
使用xpath并不好。如果页面的html被更改,您的代码将停止工作。尝试使用css选择器。 这是简单的代码,你可以为你修改它:
var collection = driver.getelementsBy(By.cssSelector('div#menu div'))
它应该返回带有元素的集合 之后,您可以遍历集合并找到要单击的元素。 希望答案可以帮助你。