IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 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”插件来测试一下路径是否正确。插件的安装和使用可以百度一下。

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-04-09 18:47:46  更:2022-04-09 18:47:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 0:11:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码