【问题标题】:Using Selenium Chrome Driver to search elemets by xpath is not working使用 Selenium Chromedriver 通过 xpath 搜索元素不起作用
【发布时间】:2017-04-27 12:44:07
【问题描述】:

我正在使用 Selenium 和 Chrome 驱动程序运行我的 Cucumber 测试。我正在尝试使用 xpath 获取 div 元素,但它不起作用。

是html元素:

<div class="row" id="headerspacing"></div>

这是我的测试代码:

WebElement div = agent.findElement(By.xpath(".//*[@id='headerspacing']"));
Assert.assertNotNull(div);

但我收到有关元素的错误消息:

org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":".//*[@id='headerspacing']"}

更新:新标签窗口

在我的 Cucumber 测试中声明的前面步骤中,Selenium 点击了一个链接(标签元素 a),它打开了一个新的选项卡窗口。我认为 Selenium 正在搜索该页面,问题出在:它正在查看当前页面而不是新标签。

所以也许我的问题:

如何搜索或移动我的驱动程序以在新打开的标签窗口中进行搜索?

【问题讨论】:

  • 你试过没有点的xpath吗?
  • 检查您的div 是否位于iframe
  • @AnassAhmed 是的,我做到了,结果相同。
  • @Andersson 它在table &gt; tbody &gt; tr &gt; td &gt; div 的内部。我是在测试,而不是设计师。
  • 表是否位于iframe 内? :) 检查是否有祖先&lt;iframe&gt;。使用浏览器的开发者控制台 (F12) 检查此信息

标签: selenium xpath cucumber automated-tests


【解决方案1】:

如果div 在新窗口(选项卡)中,您必须先切换到该窗口,然后才能找到其中的任何元素。因此,在尝试查找元素之前,您需要执行以下操作:

switchTo().window("windowName");

【讨论】:

  • 我是否需要使用延迟,因为它没有找到新的窗口选项卡。我使用的是新的 Windows url,它可以正常工作,但使用 switchTo().window("windowName"); 它不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-29
  • 2019-09-09
  • 2015-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多