我正在尝试从我的网站获取'管理员'值,这是元素
<td align="center" class="okm-DisableSelect">Administrator</td>
我使用chrome复制了xpath,我得到了这个值
/html/body/div[5]/div[3]/div/div[6]/div/div[4]/div/div[2]/table/tbody/tr[3]/td/div/div/div[2]/table/tbody/tr[3]/td[7]
我尝试了这个,但它给了我错误'无法找到元素'。我做错了什么?
driver.findElement(By.xpath("/html/body/div[5]/div[3]/div/div[6]/div/div[4]/div/div[2]/table/tbody/tr[3]/td/div/div/div[2]/table/tbody/tr[3]/td[7]")).getText();
答案 0 :(得分:1)
首先,XPath是巨大的,这将使它非常脆弱(可能会破坏)。你不应该使用从/html
开始的XPath,你不应该使用超过几层深度的XPath ......也许3-5。
其次,你没有给我们足够的信息来看看XPath有什么问题,因为它是如此巨大。最好的办法是不要使用复制XPath,因为它通常会导致像这样的大而脆弱的XPath。理想情况下,您将使用CSS选择器而不是XPath,因为它们更好地支持,更快,更容易制作。您应该花时间学习如何手工制作它们而不是使用某种工具,因为如果做得好,它们会更短,更不易碎。
鉴于提供的HTML,我将从像td.okm-DisableSelect
这样的CSS选择器开始,看看是否有效。如果没有,您可以使用包含的文本“Administrator”(例如,管理员)回退到XPath。 //td[.='Administrator']
。我确信,还有更多的选择,但没有更多的HTML,我无法告诉你它们会是什么。