Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.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 org.openqa.selenium.WebDriverException错误的根本原因是什么?_Java_Selenium_Selenium Webdriver_Webdriver - Fatal编程技术网

Java org.openqa.selenium.WebDriverException错误的根本原因是什么?

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

在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:未知

有人能告诉我是什么导致了这个错误吗


感谢您

stacktrace告诉您的基本信息:

Element not found or not visible for xpath
很可能,您提供了一个有效(语法方面)但不正确的xpath

一种很好的调试方法(在Chrome上,如果使用其他浏览器,请找到您的等效浏览器):

  • 导航到有问题的页面
  • 点击F12打开开发者工具
  • 点击CTRL+F并粘贴xpath
  • 它应该以黄色突出显示元素

  • 如果没有显示任何内容,并且该xpath的命中率为0,则表示xpath不正确。

    基本上是stacktrace告诉您的:

    Element not found or not visible for xpath
    
    很可能,您提供了一个有效(语法方面)但不正确的xpath

    一种很好的调试方法(在Chrome上,如果使用其他浏览器,请找到您的等效浏览器):

  • 导航到有问题的页面
  • 点击F12打开开发者工具
  • 点击CTRL+F并粘贴xpath
  • 它应该以黄色突出显示元素
  • 如果没有显示任何内容,并且该xpath的命中率为0,则表示xpath不正确。

    此错误消息

    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
    解决方案 解决NoTouchElementException的解决方案可以是以下任一种:

    • 采用唯一标识所需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 v8u60和您正在使用的Selenium客户机v3.13.0之间存在明显的不匹配

    解决方案
    • 将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
    解决方案 解决NoTouchElementException的解决方案可以是以下任一种:

    • 采用唯一标识所需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”