Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.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中映射XPath?_Java_Dom_Xpath_Selenium - Fatal编程技术网

Java 如何在Selenium中映射XPath?

Java 如何在Selenium中映射XPath?,java,dom,xpath,selenium,Java,Dom,Xpath,Selenium,我目前正在尝试映射屏幕抓图中下面显示的高亮线。 我看过w3schools,在这里查阅过,但我的代码似乎不正确。。我的selenium脚本不断出错,无法识别元素 目前,我正在做如下工作: selenium。单击(“xpath=//表[@id='resultTable']/tbody/tr[@class='level3']/td[@id='resultTable\u0\u1\uob']/span/a[@class='linkOnly']” 我也试过: selenium。单击(“xpath=//ta

我目前正在尝试映射屏幕抓图中下面显示的高亮线。 我看过w3schools,在这里查阅过,但我的代码似乎不正确。。我的selenium脚本不断出错,无法识别元素

目前,我正在做如下工作:

selenium。单击(“xpath=//表[@id='resultTable']/tbody/tr[@class='level3']/td[@id='resultTable\u0\u1\uob']/span/a[@class='linkOnly']”

我也试过:

selenium。单击(“xpath=//table[@id='resultable']/tbody[1]/tr[6]/td[2]/span[1]/a[1]”

这是:

selenium.click(“xpath=//table[@id='resultable']/tbody/tr[6]/td[2]/span/a”)

我做得对吗?我只是需要推迟一下?还是我完全错了


编辑:

下面是请求的代码片段。谢谢你的提示,我没有注意到有多个同名的类!嗯,但是出于某种原因,我写的另外两个XPath不起作用

在这段代码片段中,我扩展了表,以便您更好地了解表的设置方式。同样,对于图像大小,很抱歉,ctrl+scroll up会放大图片


我更喜欢使用css选择器,因为它们工作速度更快(目前使用的是webdriver+java) 因此,您的问题的解决方案如下:

  String cssSelector = "tr[class='level3']>td[id='resultTable_0_0_1_ob']>span>a[class='linkOnly']"
    driver.findElement(By.cssSelector(cssSelector)).click():
    driver.manage.timeouts.implicitWait(3,TimeUnit.SECONDS);
当您得到ID='resultable\u0\u0\u1\uob'时,我认为这个ID应该有助于在页面上查找唯一的元素。 解决问题的第二种方法: 此外,如果您的站点所使用的框架支持jQuery,那么您可以轻松地使用jQuery:

JavascriptExecutor js = (JavascriptExecutor) driver;
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("var x = $("tr[class='level3']>td[id='resultTable_0_0_1_ob']>span>a[class='linkOnly'];");
        stringBuilder.append("x.click();");
        js.executeScript(stringBuilder.toString());
别忘了在firefox的firepath(firebug扩展)中验证XPath和css选择器。 图片如下:


希望这对您有所帮助。

我更喜欢使用css选择器,因为它们工作速度更快(目前使用的是webdriver+java) 因此,您的问题的解决方案如下:

  String cssSelector = "tr[class='level3']>td[id='resultTable_0_0_1_ob']>span>a[class='linkOnly']"
    driver.findElement(By.cssSelector(cssSelector)).click():
    driver.manage.timeouts.implicitWait(3,TimeUnit.SECONDS);
当您得到ID='resultable\u0\u0\u1\uob'时,我认为这个ID应该有助于在页面上查找唯一的元素。 解决问题的第二种方法: 此外,如果您的站点所使用的框架支持jQuery,那么您可以轻松地使用jQuery:

JavascriptExecutor js = (JavascriptExecutor) driver;
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("var x = $("tr[class='level3']>td[id='resultTable_0_0_1_ob']>span>a[class='linkOnly'];");
        stringBuilder.append("x.click();");
        js.executeScript(stringBuilder.toString());
别忘了在firefox的firepath(firebug扩展)中验证XPath和css选择器。 图片如下:


希望这对您有所帮助。

xpath=//table[@id='resultable']/tbody/tr[@class='level3']/td[@id='resultable_0_0_1_ob']/span/a[@class='linkOnly']


相应的CSS是CSS=#resultable>tbody>tr.level3>#resultable\u 0\u 1\u ob>span>.linkOnly

xpath=//table[@id='resultable']/tbody/tr[@class='level3']/td[@id='resultable\u 0\u 1\u ob']/span/a[@class='linkOnly']


对应的CSS是CSS=#resultable>tbody>tr.level3>#resultable_0_0_1_ob>span>.linkOnly

对于屏幕抓取的大小,我感到抱歉。。您可以按住ctrl键并向上滚动或按住ctrl键并按shift键进行放大。。提前感谢您的帮助。查看html时,我注意到有多个节点,从您的示例中我们可以看到,不确定其他路径是否包含相同的子节点。试着从上向下只发布代码片段。您的XPath对我来说很好。@JWiley感谢您提到多个节点。直到你提到这件事我才注意到。我已经编辑了我的帖子,以包含扩展的表格。很抱歉屏幕抓取的大小。。您可以按住ctrl键并向上滚动或按住ctrl键并按shift键进行放大。。提前感谢您的帮助。查看html时,我注意到有多个节点,从您的示例中我们可以看到,不确定其他路径是否包含相同的子节点。试着从上向下只发布代码片段。您的XPath对我来说很好。@JWiley感谢您提到多个节点。直到你提到这件事我才注意到。我已经编辑了我的帖子以包含扩展表。谢谢你的帮助!不幸的是,我的web应用程序与firefox不兼容,但您的示例向我阐明了您的观点。再次感谢!谢谢你的帮助!不幸的是,我的web应用程序与firefox不兼容,但您的示例向我阐明了您的观点。再次感谢!