Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 边缘webdriver在简单findElement上失败_Java_Selenium_Xpath_Selenium Webdriver_Microsoft Edge - Fatal编程技术网

Java 边缘webdriver在简单findElement上失败

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

我将Selenium与java&TestNG结合使用一年,用于测试动态构建的web应用程序。我正在测试Chrome、FF和IE11,终于感觉准备好启动Edge webdriver了。在实现适合我的操作系统构建(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如何,尝试查找元素时测试失败。还尝试按类名和id查找,但未找到任何结果。 也许有一点很重要,那就是我正在测试一个web应用程序,它是由运行在页面内部的异步脚本构建的。我可以在页面上找到与我的应用程序无关的简单html,但我找不到我的应用程序,甚至找不到我手动放在页面中的静态脚本标记


尝试实现显式等待。这样,在元素可见之前,驱动程序不会停止。您可以将30秒更改为您想要的任何时间

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

希望这能回答您的问题。

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

  • 尝试查找的元素的完整html
  • 实际用于定位元素的xpath
另外,我认为,由于您声明了一个字符串变量(layerTypeAttribute),您还应该将元素作为字符串获取,因此请在最后添加.getAsString()

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构建的元素。