为了账号安全,请及时绑定邮箱和手机立即绑定

python 上的 Selenium Webdriver NoSuchElement

python 上的 Selenium Webdriver NoSuchElement

12345678_0001 2023-10-16 10:41:45
我正在使用 Selenium Webdriver for python,目前在 Chrome 浏览器上使用,并且我一直陷入这种特定库的奇怪情况。我想在 Pipedrive 中提取一些信息(当前能够登录并搜索网页内的特定线索,但是当我尝试提取人名时出现此异常:Traceback (most recent call last):  File "C:/Users/ppbbd/PycharmProjects/fastTasks/pipeforwpp.py", line 27, in <module>    info_box = driver.find_element_by_xpath("//div[@class='widget personFields fieldsView   '][@data-state='read']")  File "C:\Users\ppbbd\AppData\Local\Continuum\anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 394, in find_element_by_xpath    return self.find_element(by=By.XPATH, value=xpath)  File "C:\Users\ppbbd\AppData\Local\Continuum\anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 978, in find_element    'value': value})['value']  File "C:\Users\ppbbd\AppData\Local\Continuum\anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute    self.error_handler.check_response(response)  File "C:\Users\ppbbd\AppData\Local\Continuum\anaconda3\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response    raise exception_class(message, screen, stacktrace)selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//div[@class='widget personFields fieldsView   '][@data-state='read']"}  (Session info: chrome=80.0.3987.149)我搜索了这个异常,主要原因之一是动态页面和页面中元素的加载时间并不全部同时,所以我只是用来测试time.sleep(10)是否是这种情况,但我仍然收到上面显示的错误。重要提示:这是 html 的一个片段,如果您查看代码末尾,您会发现注释 info_box_a = driver.find_element_by_xpath("//div[@class='fieldsList read']")工作正常,并且正如您在图像中看到的那样,这个特定的 div 位于有问题的 div 内,所以 Selenium 怎么可能无法找到父级但其子级? HTML 片段页面来源:我无法将其发布在这里,因为它会绕过 30k 字符限制,并且源页面位于登录区域内,因此即使我发布网址,除非您在 Pipedrive 上有帐户,您也看不到页面源(如果我错了请纠正我)。任何显示另一个 html 片段的建议我可以更新问题。更新:正如您在下面的链接中看到的,一个人的电话类别值的具体信息class="item read    phoneField editable    "上有这么多空格,这是否会妨碍查找该元素?或者class="item read phoneField editable"意思完全一样吗?重要的 HTML 片段
查看完整描述

1 回答

?
开满天机

TA贡献1786条经验 获得超13个赞

尝试使用下面的 xpath,我们将类中的空格规范化。

//div[normalize-space(@class)='widget personFields fieldsView'][@data-state='read']

https://img1.sycdn.imooc.com/653e755d0001ecc805000223.jpgz

您可以按如下方式更新您的 info_box。

info_box = driver.find_element_by_xpath("//div[normalize-space(@class)='widget personFields fieldsView'][@data-state='read']")


查看完整回答
反对 回复 2023-10-16
  • 1 回答
  • 0 关注
  • 91 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信