记录学习笔记
1、报错信息:no such element--没有找到元素
原因:元素延迟加载,立即找找不到
解决方案:等一会再找
代码解决:添加隐式等待
#添加隐式等待,防止报错
driver.implicitly_wait(10)
所有找元素都会触发,每隔1s会查找元素,没找到就继续找,直到配置时间过了,还没找到就报错,找到继续执行下一步,加大自动化测试稳定性。
2、报错信息:多次自动化刷脚本,导致验证不通过
原因:大多数网站都有防自动化刷脚本的js验证
解决方案:绕过JS验证,把窗口的自动化标识去掉,使页面识别不到正在自动化刷脚本。
代码解决:固定代码,直接使用,记得导包。在打开浏览器前去掉标识。
#导包
from selenium.webdriver.edge.options import Options
# 去掉自动化测试标识
option=Options()
option.add_experimental_option('excludeSwitches',['enable-automation'])
option.add_argument('--disable-blink-features-AutomationControlled')
代码完成后,在浏览器内添加options=option
driver=webdriver.Edge(options=option)
3、报错信息:element is not attached to the page document
原因:元素找到了,但是没加载出来
解决方案:等待一会,再次操作
代码解决:添加固定等待时间
#导包
import time
#使用
time.sleep(3)
4、报错信息:element not interactable
原因1:元素被遮住
解决方案:把遮住元素关闭,使用代码点击“X”号。
原因2:元素没显示出来
解决方案:把元素显示,元素前面还有操作,代码操作点击把元素显示出来。
5、自动化刷脚本太多,IP被禁用。但手动可以打开。
解决方案:把浏览器默认的user-data带上。
代码解决:用户文件的链接地址从C:\Users\你的电脑用户名\AppData\Local\你使用的浏览器名称
# 添加用户文件 浏览器默认的user data带上,解决跑太多被禁用问题
option.add_argument(r'--user-data-dir=C:\Users\cyxco\AppData\Local\Microsoft\Edge\User Data')
6、解决动态验证码(未解决)
首先需要安装两个库:opencv和playwright库
(1)安装opencv
cmd打开管理员窗口输入:pip install opencv-python
(2)安装playwright
这个库的安装国内源安装很慢,而且不稳定,我使用了阿里源。
操作:在PyCharm的Terminal内输入
pip install playwright -i https://mirrors.aliyun.com/pypi/simple/
下载完成后继续输入
python -m playwright install
参考博客:win10系统开发环境快速安装Playwright python的方法_phoenix339的博客-CSDN博客_playwright安装
卡在了截取页面的某个元素上,我参考了许多博客上的文章代码,但是都没运行起来。
不过在解决问题的过程中也学习了新的知识点。
记录下来
with sync_playwright() as p:
# playwright使用edge浏览器以无头模式运行脚本,并且通过1000毫秒减慢执行速度
browser = p.chromium.launch(channel="msedge",headless=False, slow_mo=1000)
context = browser.new_context() # 创建浏览器实例
page = context.new_page() # 打开新的标签页
page.goto("https://captcha.ruijie.com.cn/") #截图的网站网址
print(page.title())#输出网页的标签名字
page.screenshot(path="screenshot.png")#截屏并且把图片命名
page.locator(".img").screenshot(path="screenshot.png")#从截取的图片内定位元素
最大化窗口--driver.maximize_window()
遗留问题待到成为老手再来解决吧,新手果然不能好高骛远。