Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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
Selenium无法从类中找到元素_Selenium_Xpath_Selenium Chromedriver - Fatal编程技术网

Selenium无法从类中找到元素

Selenium无法从类中找到元素,selenium,xpath,selenium-chromedriver,Selenium,Xpath,Selenium Chromedriver,我试图从我的网站上获得“管理员”的价值,这就是我的网站元素 <td align="center" class="okm-DisableSelect">Administrator</td> 我尝试了这个,但它给了我错误“无法定位元素”。我做错了什么 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/d

我试图从我的网站上获得“管理员”的价值,这就是我的网站元素

<td align="center" class="okm-DisableSelect">Administrator</td>
我尝试了这个,但它给了我错误“无法定位元素”。我做错了什么

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();

首先,XPath是巨大的,这将使它非常脆弱,很可能会崩溃。您不应该使用以/html开头的XPath,也不应该真正使用深度超过几个级别的XPath。。。也许3-5分钟

其次,您没有给我们提供足够的信息来了解XPath有什么问题,因为它太大了。最好不要使用复制XPath,因为它通常会导致像这样的大型、脆弱的XPath。理想情况下,您应该使用CSS选择器而不是XPath,因为它们支持得更好、速度更快、更容易制作。你应该花时间学习如何手工制作,而不是使用一些工具,因为如果做得好,它们会更短、更不脆

考虑到提供的HTML,我将从一个CSS选择器(如td.okm-DisableSelect)开始,看看它是否有效。如果没有,您可以使用包含的文本Administrator返回XPath,例如//td[.='Administrator']。我敢肯定,有更多的选择,但如果没有更多的HTML,我无法告诉你它们会是什么

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();