Java 边缘webdriver在简单findElement上失败
我将Selenium与java&TestNG结合使用一年,用于测试动态构建的web应用程序。我正在测试Chrome、FF和IE11,终于感觉准备好启动Edge webdriver了。在实现适合我的操作系统构建(14393版)的边缘驱动程序并成功加载网页后 尝试使用此xPath字符串查找元素时遇到问题:Java 边缘webdriver在简单findElement上失败,java,selenium,xpath,selenium-webdriver,microsoft-edge,Java,Selenium,Xpath,Selenium Webdriver,Microsoft Edge,我将Selenium与java&TestNG结合使用一年,用于测试动态构建的web应用程序。我正在测试Chrome、FF和IE11,终于感觉准备好启动Edge webdriver了。在实现适合我的操作系统构建(14393版)的边缘驱动程序并成功加载网页后 尝试使用此xPath字符串查找元素时遇到问题: ".//*[contains(@class,'cbola-layer in-content-container-wrapper')]" 错误: org.openqa.selenium.NoSuc
".//*[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如何,尝试查找元素时测试失败。还尝试按类名和id查找,但未找到任何结果。
也许有一点很重要,那就是我正在测试一个web应用程序,它是由运行在页面内部的异步脚本构建的。我可以在页面上找到与我的应用程序无关的简单html,但我找不到我的应用程序,甚至找不到我手动放在页面中的静态脚本标记
尝试实现显式等待。这样,在元素可见之前,驱动程序不会停止。您可以将30秒更改为您想要的任何时间
WebElement layerTypeAttribute = (new WebDriverWait(driver, 30)).until(ExpectedConditions.presenceOfElementLocated(By.xpath("xpath value")));
希望这能回答您的问题。您发布的错误消息指的是xpath,因此为了能够帮助您,请同时在此处发布:
- 尝试查找的元素的完整html
- 实际用于定位元素的xpath
String layerTypeAttribute = driver.findElement(By.xpath(Consts.XPATH_STRING))
.getAttribute("layer_attribute").getAsString();
请告诉我们进展如何。
祝你好运 可能是边缘驱动程序速度慢,加载时间比其他浏览器长,不如等待一段时间?此字符串与可能的问题无关。最好提供Consts.XPATH_字符串和html(或dom部分)片段,说明该元素确实存在。您是否能够使用除Edge之外的浏览器找到该元素?请您也提供
Consts.XPATH\u STRING
的值以及您试图查找的元素的html?您完全正确。这里是xPath:“../*[contains(@class,'cbola-layer-in-content-container wrapper')]”。它在Chrome、FF和IE11上工作。恐怕这不是等待问题,因为我可以直观地看到页面中的整个元素。(当页面加载时,它会构建我的web应用程序,然后我开始测试)谢谢@Vishal,但我担心这不是等待问题,因为我可以直观地看到页面中的整个元素。(当页面加载时,它会构建我的web应用程序,然后我开始测试)。谢谢@Xwris Stoixeia,但是1)在我可以使用该方法之前,我还没有找到webElement。2) 程序“无法解析该方法。getAsString()”。不用担心,您的xpath肯定有问题。如果你能得到你试图定位的元素的html代码,我会尽力帮助你。请查看我上面的更新:“试图通过类名和id进行查找,但什么都没有找到。”因此我认为不再是xPath,而是查找由javascript构建的元素。