Message: no such element: Unable to locate element:selenium报错

这篇具有很好参考价值的文章主要介绍了Message: no such element: Unable to locate element:selenium报错。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、 Message: no such element: Unable to locate element:selenium报错

       最近在使用selenium爬虫时遇到了这个报错,反复检查了自己xpath路径确认没有问题。但是程序还是会报错:“Message: no such element: Unable to locate element: {“method”:“xpath”,“selector”:“//*[@id=“rootWrapper”]/div/div/div/div[2]/div/div[2]/div/div/div/div[2]/div[2]/ul/li[1]”}”。

代码如下:

import time
from selenium import webdriver as wb
import warnings
import pyautogui as pg
from PIL import ImageGrab,Image
import pytesseract
warnings.filterwarnings('ignore')

driver = wb.Chrome(executable_path='D:/cromedriver/chromedriver.exe')
# 登录
driver.get("https://www.xxxxxx.com")
time.sleep(3)
# 窗口一
driver.find_element_by_xpath('//*[@id="root"]/div/div[2]/div[1]/div/div[2]/div/span[1]').click()
#输入用户密码
driver.find_element_by_id('username').send_keys('xxxxxx')
driver.find_element_by_id('password').send_keys('xxxxxx')
driver.find_element_by_xpath('//*[@id="root"]/div/div/div[2]/div[4]/div/div[2]/form/div[4]/div/div/div/button').click()
# 等待加载
time.sleep(5)

# 窗口二
driver.execute_script('window.open("https://www.xxxxxxx.com/new_yun/#/examPage?exam_id=942&exam_title=%E4%BA%91%E6%9C%8D%E5%8A%A1HCIP20220325&type=prewBank&kind=1&back=2")')
# list_windows = driver.window_handles   # 获取的窗口
# driver.switch_to.window(list_windows[1]) # 跳转窗口

time.sleep(5)
for x in range(1,10):
        # 点击下一题
        driver.find_element_by_xpath('//*[@id="rootWrapper"]/div/div/div/div[2]/div/div[2]/div/div/div/div[2]/div[2]/ul/li['+str(x)+']').click()
        # 点击查看答案
        driver.find_element_by_xpath('//*[@id="rootWrapper"]/div/div/div/div[2]/div/div[2]/div/div/div/div[1]/div/div[2]/div[2]/button').click()
        img1 = ImageGrab.grab(bbox=(120,204,1295,603))
        img1.save('./jt/'+str(x)+'.png')
        img2 = ImageGrab.grab(bbox=(130,745,200,773))
        img2.save('./da/'+str(x)+'.png')

二、解决方案

造成上述问题可能由以下原因导致:

原因一:

       在打开多个窗口的情况下一定要注意selenim到底处于那个窗口上,如上述代码我打开了两个窗口最开始就是没有注意到,其实我的selenim一直处于第一个窗口中。所以我一直是在用第二窗口上的xpath路径在第一个窗口中匹配内容,所以肯定是会报错的。这时就是需要切换到自己的窗口了。代码如下:

首先可以去获取自己打开的窗口:

list_windows = driver.window_handles 

然后在去切换到自己想要的窗口下:

driver.switch_to.window(list_windows[1]) #list_windows 存储了上一步中获取的窗口

原因二:

       在网络不稳定的情况下可能网页并没有完全加载完成,但是这个时候我们已经开始进行xpath路径解析了。这样就会导致找不到我们想要的内容也是会报错。
       这个时候可以让程序这里等待一会,等待页面加载完全在进行访问。等待代码如下:

time.sleep(5)

原因三

       还有一个原因可能就是自己的xpath路径确实是有问题的,大家可以通过谷歌或者火狐的“xpathhelper”插件来测试一下路径是否正确。插件的安装和使用可以百度一下。文章来源地址https://www.toymoban.com/news/detail-511936.html

到了这里,关于Message: no such element: Unable to locate element:selenium报错的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Selenium 元素定位不到(Unable to locate element)

    问题描述: 使用selenium进行元素定位时,元素的定位信息是正确的,但是脚本执行时,依旧会出现元素不存在的错误。 这个问题的原因在于,页面有一个加载的过程,当我们进行元素定位时,需要页面将该元素加载出来,如果元素没有加载出来,那么即使定位方式是正确的,

    2024年02月07日
    浏览(40)
  • [Selenium]Message: disconnected: Unable to receive message from rendererXXX:报错解决

    selenium.common.exceptions.WebDriverException: Message: disconnected: Unable to receive message from renderer   (failed to check if window was closed: disconnected: not connected to DevTools)   (Session info: MicrosoftEdge=115.0.xxxx.xxx)         示例中使用的是最新版本的 webdriver.EdgeOptions() 创建 edge_options 实例。然后使用

    2024年02月04日
    浏览(44)
  • selenium打开浏览器报错成功解决selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain...

            报错内容为           我将我运行代码同一目录下的msedgedriver.exe没有改名为MicrosoftWebDriver.exe同时我又将python/Scripts目录里面的驱动器改名为MicrosoftWebDriver.exe结果导致了文章开始的报错         我将我运行代码同一目录下的msedgedriver.exe改名为MicrosoftWebDriver.exe这样

    2024年02月10日
    浏览(78)
  • 关于selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain...的处理

    参考两位大佬的文章:代码实现对selenium的驱动器WebDrive的配置_疏狂难除的博客-CSDN博客 selenium打开浏览器报错成功解决selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain...-CSDN博客 直接上报错: 参考两位的文章后感觉报错原因是寻找路径失败或冲突的问题。 因为运行

    2024年02月04日
    浏览(41)
  • selenium报Unable to locate or obtain driver for {options.capabilities[‘browserName‘]}

    之前写了一个get_dirver函数,单独运行的时候没问题。后面导入调用的时候也是正常的。 但是后面把这个合入到另一个项目的时候就报Unable to locate or obtain driver for {options.capabilities[‘browserName’]}这个错误。 后面编辑源文件,print了一下函数里面获取的路径,显示不是在当前目

    2024年02月04日
    浏览(60)
  • Laravel 使用mix引入本地样式文件 报错 Unable to locate Mix处理

    ✔ Compiled Successfully in 4524ms ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────┬

    2024年02月13日
    浏览(37)
  • 解决linux安装yum报错 E: Unable to locate package yum

    参考: 解决linux安装yum报错 E: Unable to locate package yum

    2024年02月04日
    浏览(61)
  • Ubuntu 20.04安装yum报错:E: Unable to locate package yum

    直接上解决方案! 1、选择自己对应的版本的源地址 注意需要选择跟系统版本一致的:https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ 找到Ubuntu点击小问号,进去选择对应的版本,将下面的镜像复制到Linux系统的 /etc/apt/sources.list 文件中,将原来的源先备份再全部覆盖。 备份文件 cp 

    2024年01月24日
    浏览(53)
  • selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for chrome using

    这个报错可能原因:1、驱动下载错误   2、驱动存放位置错误  3、解释器不匹配对应目录 搞了半天才在一个评论里点醒我,新建的项目自带了一个python解释器一直没管,更换到原装的解释器就可以自动识别浏览器驱动了,特此记录

    2024年04月17日
    浏览(34)
  • selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for firefox using

    意思大概是:selenium获取不到firefox的驱动(geckodriver.exe) 错误原因:1. firefox(或者其他的selenium浏览器驱动--e.g.webchrome、safari等)放置的位置不正确。 今天傻羊在用selenium爬虫的时候发现,原来能用的firefox 突然就报错说用不了,刚开始的时候针对版本不匹配的问题进行更改

    2024年02月12日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包