Selenium无法从类中找到元素

问题描述 投票:0回答:1

我试图从我的网站获得'管理员'的价值,这是元素

<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();
selenium xpath selenium-chromedriver
1个回答
1
投票

首先,XPath是巨大的,这将使它非常脆弱(可能会破坏)。你不应该使用从/html开始的XPath,你不应该使用超过几个级别的XPath ...也许3-5。

其次,你没有给我们足够的信息来看看XPath有什么问题,因为它是如此巨大。最好的办法是不要使用复制XPath,因为它通常会导致像这样的大而脆弱的XPath。理想情况下,您将使用CSS选择器而不是XPath,因为它们更好地支持,更快,更容易制作。您应该花时间学习如何手工制作它们而不是使用某种工具,因为如果做得好,它们会更短,更不易碎。

鉴于提供的HTML,我将从像td.okm-DisableSelect这样的CSS选择器开始,看看是否有效。如果没有,您可以使用包含的文本“Administrator”(例如,管理员)回退到XPath。 //td[.='Administrator']。我确信,还有更多的选择,但没有更多的HTML,我无法告诉你它们会是什么。

© www.soinside.com 2019 - 2024. All rights reserved.