【问题标题】:Selenium WebDriver does not find element by XPATHSelenium WebDriver 通过 XPATH 找不到元素
【发布时间】:2014-08-19 22:19:56
【问题描述】:

我正在尝试编写一个 Selenium 测试用例,并从 Firefox 中的 Selenium IDE 开始。 测试在那里工作得很好。现在我想使用 Selenium Webdriver 自动执行该测试并导出相应的 JAVA 类。 到目前为止,一切都设置好并且工作正常(Internet Explorer 窗口正在打开,显示相应的页面)。

但是:Selenium Webdriver 找不到该元素。 我想得到以下元素:

<div class="x-grid3-cell-inner x-grid3-col-instance/status" unselectable="on">Open</div>

我有以下代码:

    WebElement openWorkItem = driver.findElement(By.xpath("//div[contains(text(),'Open')]"));
System.out.println(openWorkItem.getText());

在使用 Selenium IDE 的测试用例中,语句几乎相同,并且可以正常工作:

<td>//div[contains(text(),'Open')]</td>

唯一的区别是,Selenium IDE 仅在 Firefox 中可用,但最后我希望使用 Selenium WebDriver 在 IE 中执行测试。

非常感谢任何帮助。

==更新== 我执行了driver.getPageSource(),现在看到我要查找的 HTML 部分不可用,因为它似乎位于 iFrame 中。有什么想法吗?

【问题讨论】:

  • 试过//div[text()='Open']?
  • 感谢您的建议。我试过了,还是不行。
  • 页面是否使用框架?如果是这样,浏览器对帧的处理方式不同,因此对于 IE 6、7、8、9,第一帧可能是 frame[0],但 W3C 将第一帧定义为 frame[1]。要在 IE 中解决这个问题,请将 SelectionLanguage 设置为 XPath。
  • “有什么想法吗?” - 是的,在尝试查找元素之前切换到 iframe

标签: java selenium xpath


【解决方案1】:

您可以使用 findElement 来获取框架 webelement 并将其与 switchto() 方法一起使用。

driver.switchTo().frame(driver.findElement(By.xpath("iframe[contains(@name=pngNewC‌​ase1143241142570_IFrame)]")));

如果你有其他属性比如src,你可以试试下面的。

WebElement frame=driver.findElement(By.xpath("//iframe[@src='showNewClaimForm.action']");
driver.switchTo().frame(frame);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-20
    • 2018-08-28
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多