【问题标题】:How to stop Selenium on clicking span element如何在单击 span 元素时停止 Selenium
【发布时间】:2019-04-24 12:06:16
【问题描述】:

下面是元素

<a href="#" class="finalLevel showMenuElement" data-index="8,2,5" title="Workitem Summary"  data-wintitle="Workitem Summary">Workitem Summary<span id="fav" class="addtoFav"></span></a>

我想单击链接文本“工作项摘要”,但似乎 Selenium 正在单击 id="fav" 元素。

如何告诉 Selenium 点击 Linktext "Workitem Summary" 而不是 span 元素?

这两个元素彼此相邻。

我什至尝试过 XPath,结果相同

driver.findElement(By.linkText("Workitem Summary")).click();
driver.findElement(By.xpath("//*[@id=\"2\"]/li[5]/a")).click();

【问题讨论】:

  • 发布您的 html 代码。
  • &lt;span&gt;&lt;a&gt; 节点的子节点。为什么要避免考虑&lt;span&gt;?你的用例到底是什么?
  • span 是链接的一部分,如果你想在你喜欢的链接中添加这个链接,你使用 span。但是因为我想打开链接,所以我想避免跨度

标签: selenium


【解决方案1】:

标签之间的文本是“Workitem Summary”,所以如果你会使用

driver.findElement(By.linkText("Workitem Summary")).click(); 

该超链接将被点击。

跨度无论如何都在锚标记之间。

你可以有类似的东西:

driver.findElement(By.xpath("//a[@title='Workitem Summary']")).click()  

希望这会有所帮助。

【讨论】:

  • 感谢回答,结果还是一样
【解决方案2】:

您可以尝试使用偏移点击(点击左上角的x-y坐标距离,以像素为单位):

WebElement myElement = driver.findElement(By.xpath("//a[@title='Workitem Summary']");
Actions build = new Actions(driver);
build.moveToElement(myElement, X-offset, Y-offset).click().build().perform();

输入 X 偏移和 Y 偏移的对应值(以像素为单位)。

编辑:

OP 可以通过以下代码解决问题:

WebElement add1 = driver.findElement(By.linkText("Workitem Summary")); 
int width = add1.getSize().getWidth(); 
Actions act = new Actions(driver); 
act.moveToElement(add1).moveByOffset((width / 2) - 2, 0).click().perform(); 
add1.click();

【讨论】:

  • 您使用了哪些 x-y 值?尝试使用较低的值(例如 2 像素)。
  • 值为 254 和 171
  • 这太过分了。那几乎肯定会在元素之外单击。尝试使用 5 和 5 像素。
  • 它做了一些事情,让我解释一下,所以从左上角我有一个菜单,我点击它会给出如下内容: A B C D E 现在点击 A,显示屏幕与其他菜单项 A 类似A1 B A2 C A3 D E 我想点击 E-E4,尝试这个 5,5 ,它实际上导航到 E-E4,但是点击的链接是 D-D4,E-E4 和 D-D4 都会共享相同的坐标,所以我们接近修复它:)
  • 得到了解决方案,WebElement add1 = driver.findElement(By.linkText("Workitem Summary")); int 宽度 = add1.getSize().getWidth();动作动作 = 新动作(驱动程序); act.moveToElement(add1).moveByOffset((width / 2) - 2, 0).click().perform(); add1.click();
猜你喜欢
  • 2017-11-23
  • 1970-01-01
  • 2022-01-06
  • 2019-05-04
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 2021-07-03
  • 1970-01-01
相关资源
最近更新 更多