Edge webdriver在简单的findElement上失败

时间:2017-07-25 09:55:59

标签: java selenium xpath selenium-webdriver microsoft-edge

我正在使用Selenium和java& TestNG一年来测试正在动态构建的Web应用程序。我正在测试Chrome,FF和IE11,最后准备启动Edge webdriver。在实现适合我的操作系统构建的Edge驱动程序(版本14393)并成功加载网页后

尝试使用此xPath字符串查找元素时出现问题:

".//*[contains(@class,'cbola-layer in-content-container-wrapper')]"

错误:

  

org.openqa.selenium.NoSuchElementException:没有这样的元素

这是我使用的简单代码:

String layerTypeAttribute = driver.findElement(By.xpath(Consts.XPATH_STRING)).getAttribute("layer_attribute");

是否有找到XPath的解决方法?

已安装的Java版本为1.8.0_73

更新 无论xPath如何,尝试查找元素时测试失败。试图通过班级名称和身份查找,没有任何事情发生。 也许重要的是,我要测试一个由在页面内运行的异步脚本构建的Web应用程序。我可以在页面上找到与我的应用程序无关的简单html,但是我无法找到我的应用程序,甚至找不到我手动放入页面的静态脚本标记。

Screenshot of the web elements

2 个答案:

答案 0 :(得分:0)

尝试实现显式等待。因此,驱动程序不会停止,直到元素可见。您可以将30秒更改为您希望的任何金额。

WebElement layerTypeAttribute = (new WebDriverWait(driver, 30)).until(ExpectedConditions.presenceOfElementLocated(By.xpath("xpath value")));

希望这能回答你的问题。

答案 1 :(得分:0)

您发布的错误消息是指xpath,所以为了能够帮助您,请在此处发布:

  • 您要查找的元素的完整html
  • 您实际用于定位元素的xpath

另外,我认为因为你声明了一个String变量(layerTypeAttribute),你也应该将该元素作为字符串获取,所以请最后添加 .getAsString()

String layerTypeAttribute = driver.findElement(By.xpath(Consts.XPATH_STRING))
.getAttribute("layer_attribute").getAsString();

请告诉我们它是怎么回事。 祝你好运!