如何使用selenium java单击带有span标记的链接

时间:2017-07-27 13:48:32

标签: java selenium selenium-webdriver

我在点击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

它似乎不起作用。我该如何解决?

5 个答案:

答案 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'))

它应该返回带有元素的集合 之后,您可以遍历集合并找到要单击的元素。 希望答案可以帮助你。