我目前正在尝试在屏幕抓取中映射下面显示的突出显示的行。 我已经看了w3schools并在这里查了一下,但似乎无法让我的代码正确。我的selenium脚本不断出错,无法识别元素。
目前,我正在做类似的事情:
selenium.click("xpath=//table[@id='resultTable']/tbody/tr[@class='level3']/td[@id='resultTable_0_0_1_ob']/span/a[@class='linkOnly']");
我也试过这个:
selenium.click("xpath=//table[@id='resultTable']/tbody[1]/tr[6]/td[2]/span[1]/a[1]");
和此:
selenium.click("xpath=//table[@id='resultTable']/tbody/tr[6]/td[2]/span/a");
我做得对吗,我只是需要延迟?或者我完全错了吗?
编辑:
以下是请求的代码段。感谢指针,我没有注意到有多个具有相同名称的类!嗯,但由于某种原因,我写的其他两个XPath都不起作用。
在此代码段中,我展开了表格,以便您更好地了解表格的设置方式。再次,抱歉图像大小,但 ctrl +向上滚动应该放大图片。
答案 0 :(得分:1)
我更喜欢使用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 ='resultTable_0_0_1_ob'时,我认为这个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扩展名)中的xpaths,css选择器。 提供以下图片:
希望这会对你有所帮助。
答案 1 :(得分:0)
的xpath = //表[@ ID = 'resultTable'] / tbody的/ TR [@类= '级别3'] / TD [@ ID = 'resultTable_0_0_1_ob'] /跨度/ A [@类= 'linkOnly']
对应的CSS是css =#resultTable> tbody> tr.level3> #resultTable_0_0_1_ob> span> .linkOnly