我正在使用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,但是我无法找到我的应用程序,甚至找不到我手动放入页面的静态脚本标记。
答案 0 :(得分:0)
尝试实现显式等待。因此,驱动程序不会停止,直到元素可见。您可以将30秒更改为您希望的任何金额。
WebElement layerTypeAttribute = (new WebDriverWait(driver, 30)).until(ExpectedConditions.presenceOfElementLocated(By.xpath("xpath value")));
希望这能回答你的问题。
答案 1 :(得分:0)
您发布的错误消息是指xpath,所以为了能够帮助您,请在此处发布:
另外,我认为因为你声明了一个String变量(layerTypeAttribute),你也应该将该元素作为字符串获取,所以请最后添加 .getAsString()!
String layerTypeAttribute = driver.findElement(By.xpath(Consts.XPATH_STRING))
.getAttribute("layer_attribute").getAsString();
请告诉我们它是怎么回事。 祝你好运!