Java org.openqa.selenium.WebDriverException错误的根本原因是什么?
在UI测试期间,我遇到了以下错误 org.openqa.selenium.WebDriverException:元素未找到或未找到 对于xpath可见: (//div[@class='popupContent'])[last()]/div/div/div/div/div[2]/div/table/tbody 生成信息:版本:“3.13.0”,修订版:“2f0d292”,时间: '2018-06-25T15:24:21.231Z'系统信息:主机:'x',ip:'172.25.x.x', os.name:'Windows 7',os.arch:'amd64',os.version:'6.1', java.version:'1.8.0_60'驱动程序信息:Driver.version:未知 有人能告诉我是什么导致了这个错误吗Java org.openqa.selenium.WebDriverException错误的根本原因是什么?,java,selenium,selenium-webdriver,webdriver,Java,Selenium,Selenium Webdriver,Webdriver,在UI测试期间,我遇到了以下错误 org.openqa.selenium.WebDriverException:元素未找到或未找到 对于xpath可见: (//div[@class='popupContent'])[last()]/div/div/div/div/div[2]/div/table/tbody 生成信息:版本:“3.13.0”,修订版:“2f0d292”,时间: '2018-06-25T15:24:21.231Z'系统信息:主机:'x',ip:'172.25.x.x', os.na
感谢您stacktrace告诉您的基本信息:
Element not found or not visible for xpath
很可能,您提供了一个有效(语法方面)但不正确的xpath
一种很好的调试方法(在Chrome上,如果使用其他浏览器,请找到您的等效浏览器):
如果没有显示任何内容,并且该xpath的命中率为0,则表示xpath不正确。基本上是stacktrace告诉您的:
Element not found or not visible for xpath
很可能,您提供了一个有效(语法方面)但不正确的xpath
一种很好的调试方法(在Chrome上,如果使用其他浏览器,请找到您的等效浏览器):
org.openqa.selenium.WebDriverException: Element not found or not visible for xpath: (//div[@class='popupContent'])[last()]/div/div/div/div/div[2]/div/table/tbody
…意味着WebDriver实例无法根据您使用的定位器策略找到任何元素
理由 错误元素未找到或不可见的原因可能是以下任一原因:
- 您所采用的定位器策略不会标识中的任何元素
- 您采用的定位器策略无法识别该元素,因为它不在浏览器的位置范围内
- 您采用的定位器策略标识元素,但由于存在属性style=“display:none;”,因此不可见
- 您采用的定位器策略不会唯一地标识HTML DOM中所需的元素,并且当前会找到其他隐藏/不可见的元素
- 您试图查找的WebElement位于
标记内 - WebDriver实例甚至在WebElement在HTMLDOM中出现/可见之前就在寻找WebElement
- 采用唯一标识所需WebElement的。您可以借助开发人员工具(Ctrl+Shift+I或F12)并使用元素检查器 在这里,您将看到有关的详细讨论
- 使用方法滚动元素以查看,如下所示:
WebElement elem = driver.findElement(By.xpath("element_xpath")); ((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView();", elem);
在这里,您将看到有关的详细讨论WebElement element = driver.findElement(By.xpath("element_xpath")); ((JavascriptExecutor)driver).executeScript("arguments[0].removeAttribute('style')", element) element.sendKeys("text_to_send");
- 如果元素具有属性style=“display:none;”,请通过
方法删除该属性,如下所示:executeScript()
WebElement elem = driver.findElement(By.xpath("element_xpath")); ((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView();", elem);
WebElement element = driver.findElement(By.xpath("element_xpath")); ((JavascriptExecutor)driver).executeScript("arguments[0].removeAttribute('style')", element) element.sendKeys("text_to_send");
- 要检查元素是否在
中,请通过以下任一方法向上遍历HTML以找到相应的
标记和
所需的iframe:切换到()
在这里,您可以找到有关的详细讨论driver.switchTo().frame("frame_name"); driver.switchTo().frame("frame_id"); driver.switchTo().frame(1); // 1 represents frame index
- 如果元素在HTML DOM中不存在/不可见,请按如下所示将其设置为适当的方法:
WebElement elem = driver.findElement(By.xpath("element_xpath")); ((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView();", elem);
WebElement element = driver.findElement(By.xpath("element_xpath")); ((JavascriptExecutor)driver).executeScript("arguments[0].removeAttribute('style')", element) element.sendKeys("text_to_send");
- 等待:
- 等待:
- 等待:
JDK版本问题 除了上述原因/解决方案外,您的主要问题之一是所使用的二进制文件版本之间的不兼容,如下所示:
- 您的JDK版本是1.8.0_60,它非常古老和古老
- 将JDK升级到最新级别
- 将硒升级到当前水平
- 执行
@测试
org.openqa.selenium.WebDriverException: Element not found or not visible for xpath: (//div[@class='popupContent'])[last()]/div/div/div/div/div[2]/div/table/tbody
…意味着WebDriver实例无法根据您使用的定位器策略找到任何元素
理由 错误元素未找到或不可见的原因可能是以下任一原因:
- 您所采用的定位器策略不会标识中的任何元素
- 您采用的定位器策略无法识别该元素,因为它不在浏览器的位置范围内
- 您采用的定位器策略标识元素,但由于存在属性style=“display:none;”,因此不可见
- 您采用的定位器策略不会唯一地标识HTML DOM中所需的元素,并且当前会找到其他隐藏/不可见的元素
- 您试图查找的WebElement位于
标记内 - WebDriver实例甚至在WebElement在HTMLDOM中出现/可见之前就在寻找WebElement
- 采用唯一标识所需WebElement的。您可以借助开发人员工具(Ctrl+Shift+I或F12)并使用元素检查器 在这里,您将看到有关的详细讨论
- 使用方法滚动元素以查看,如下所示:
WebElement elem = driver.findElement(By.xpath("element_xpath")); ((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView();", elem);
在这里,您将看到有关的详细讨论WebElement element = driver.findElement(By.xpath("element_xpath")); ((JavascriptExecutor)driver).executeScript("arguments[0].removeAttribute('style')", element) element.sendKeys("text_to_send");
- Incase元素具有属性style=“display”