Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.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 在Selenium 3中使用xpath定位元素时出错_Java_Selenium_Xpath_Selenium Webdriver - Fatal编程技术网

Java 在Selenium 3中使用xpath定位元素时出错

Java 在Selenium 3中使用xpath定位元素时出错,java,selenium,xpath,selenium-webdriver,Java,Selenium,Xpath,Selenium Webdriver,我试图使用Xpath单击一个链接(看起来像一个选项卡按钮),但出现了一个错误 这是html代码段: 建议方案 做事总有更好的方法。你只能建议我们改进。 你没有提供任何帮助来解决你的问题,我给你-分,因为现在是猜谜游戏 我可以说: 您没有提供页面的完整html,只有按钮,它没有帮助。因为您使用的是Chrome,所以不要使用firepath,而是以下功能: RMB(打开按钮)->检查->突出显示部分RMB->复制->复制Xpath 并检查xpath是否相同 如果它是相同的,它可能是由您使用的静

我试图使用
Xpath
单击一个链接(看起来像一个选项卡按钮),但出现了一个错误

这是
html
代码段:


建议方案

做事总有更好的方法。你只能建议我们改进。
你没有提供任何帮助来解决你的问题,我给你-分,因为现在是猜谜游戏

我可以说:

  • 您没有提供页面的完整html,只有按钮,它没有帮助。因为您使用的是Chrome,所以不要使用firepath,而是以下功能:

    RMB(打开按钮)->检查->突出显示部分RMB->复制->复制Xpath

    并检查xpath是否相同

  • 如果它是相同的,它可能是由您使用的静态方法引起的,则驱动程序不太聪明,无法按下某物后面的按钮,或者您必须向下滚动才能按下它。这就是我想要截图的原因

  • 如果您需要向下滚动页面以按它,请在driver.findElement()之前添加以下内容:


    如前所述,这是我的猜测,因为你没有提供任何信息

    你没有提供任何东西来帮助你解决问题,我会给你-分,因为现在是猜测游戏

    我可以说:

  • 您没有提供页面的完整html,只有按钮,它没有帮助。因为您使用的是Chrome,所以不要使用firepath,而是以下功能:

    RMB(打开按钮)->检查->突出显示部分RMB->复制->复制Xpath

    并检查xpath是否相同

  • 如果它是相同的,它可能是由您使用的静态方法引起的,则驱动程序不太聪明,无法按下某物后面的按钮,或者您必须向下滚动才能按下它。这就是我想要截图的原因

  • 如果您需要向下滚动页面以按它,请在driver.findElement()之前添加以下内容:


    如前所述,我猜您没有提供任何信息,因此您可能没有等待页面完全加载。 在尝试单击页面之前,请尝试等待页面完全加载。如果xpath是正确的,那么它必须是正确的

    要进行测试,请使用Chrome进入网页。按F12打开开发人员的工具。转到console选项卡并键入以下内容:
    x(“/html/body/div[5]/div[2]/div”)
    检查结果。如果它返回正确的元素,那么您就拥有了正确的xpath。如果没有,请尝试以下操作:

  • //div[@id='tile-8']

  • //div[@id='tile-8']/span[text()='Suggestion Scheme']

  • //span[text()=“建议方案”]


  • 如果选项1起作用,只需使用
    By.id(“tile-8”)
    而不是
    By.xpath()

    您可能没有等待页面完全加载。 在尝试单击页面之前,请尝试等待页面完全加载。如果xpath是正确的,那么它必须是正确的

    要进行测试,请使用Chrome进入网页。按F12打开开发人员的工具。转到console选项卡并键入以下内容:
    x(“/html/body/div[5]/div[2]/div”)
    检查结果。如果它返回正确的元素,那么您就拥有了正确的xpath。如果没有,请尝试以下操作:

  • //div[@id='tile-8']

  • //div[@id='tile-8']/span[text()='Suggestion Scheme']

  • //span[text()=“建议方案”]


  • 如果选项1有效,只需使用
    By.id(“tile-8”)
    而不是
    By.xpath()

    我可以看出您一直在使用firepath自动生成的xpath。我想是的

    大多数情况下,这些Xpath都存在浏览器兼容性问题。开始编写动态Xpath,在脚本中使用该Xpath之前,通过在Firebug或Chrome developer选项中检查Xpath,确保Xpath是正确的

    在chrome中导航到开发者选项的步骤:

  • 打开chrome并导航到应用程序
  • 按F12
  • 现在您将看到开发人员控制台。单击
    ctrl+F
    并粘贴您编写的Xpath。如果Xpath正确,您将看到匹配的节点结果以黄色突出显示

  • 如果您有任何问题,请告诉我。

    我可以看出您一直在使用firepath自动生成的Xpath。我想是的

    大多数情况下,这些Xpath都存在浏览器兼容性问题。开始编写动态Xpath,在脚本中使用该Xpath之前,通过在Firebug或Chrome developer选项中检查Xpath,确保Xpath是正确的

    在chrome中导航到开发者选项的步骤:

  • 打开chrome并导航到应用程序
  • 按F12
  • 现在您将看到开发人员控制台。单击
    ctrl+F
    并粘贴您编写的Xpath。如果Xpath正确,您将看到匹配的节点结果以黄色突出显示

  • 如果您有任何问题,请告诉我。

    您可以在浏览器上安装“ChroPath”生成Xpath

    通过在浏览器上安装“ChroPath”,可以生成Xpath

    感谢您的帮助,因为我是selenium automation的新手。请为提到的按钮共享
    HTML
    代码您正在使用位置
    xpath
    ,这不会更稳定,为了获得更好的解决方案,您需要共享相关的HTML。如果有帮助,我可以在这里共享HTML吗???@AmitPandey您可以在编辑您的问题后共享HTML。由于我是selenium automation的新手,请提供帮助。共享所提到的按钮的
    HTML
    代码您正在使用位置
    xpath
    ,这不会更多稳定,为了更好的解决方案,你需要共享相关的HTML。如果有帮助的话,我可以在这里共享HTML吗???@AmitPandey你可以在编辑你的问题后共享HTML。HTML代码太长,无法粘贴到这里,这很好
    ((JavascriptExecutor)driver).executeScript("scroll(0,250)");  //250 is value of page scrolled, depends how much