栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python Selenium UI 自动化问题汇总

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python Selenium UI 自动化问题汇总

Python Selenium UI 自动化问题汇总

问题1:xpath定位正确,但是获取不到内容
解决办法:

import time
time.sleep(2)

添加强制等待时间

问题2:xpath定位正确,跳转到新页面,定位失败
解决办法:

handles = driver.window_handles          #获取当前浏览器的所有窗口句柄
driver.switch_to.window(handles[-1])     #切换到最新打开的窗口

在获取xpath的上面添加即可。

贴上完整代码:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from PIL import Image
import time
import ddddocr

# 自动化进入网页
s = Service(r"F:Courseedutestchromedriver.exe")
driver = webdriver.Chrome(service=s)
driver.get('网页')
driver.refresh()  # 刷新页面
driver.maximize_window()  # 浏览器最大化
# 获取验证码的图片,并进行识别,将识别的结果,输入到验证码输入框中
# 对当前页面进行截图
driver.save_screenshot('login.png')
# 选择验证码图片的元素
yzm_btn = driver.find_element_by_id('imgObj')
# 获取图片元素的位置
loc = yzm_btn.location
# 获取图片的宽高
size = yzm_btn.size
# 获取验证码上下左右的位置,电脑的缩放比例125%(100%就不需要乘),需要乘以1.25,否则会出现定位不准确
left = loc['x']
top = loc['y']
right = (loc['x'] + size['width'])
botom = (loc['y'] + size['height'])
val = (left, top, right, botom)         # 得到左上右下的值,顺序固定
# 打开网页截图
login_pic = Image.open('login.png')
# 通过左上右下的值,去截取验证码
yzm_pic = login_pic.crop(val)
# 保存验证码
yzm_pic.save('yzm.png')
# 识别验证码
ocr = ddddocr.DdddOcr(old=True)
with open("yzm.png", 'rb') as f:
    image = f.read()
res = ocr.classification(image)
# 填充用户名 密码 验证码
driver.find_element_by_name('txt_loginName').send_keys("账号")
driver.find_element_by_name('txt_password').send_keys("密码")
driver.find_element_by_name("txt_code").send_keys(res)
# 点击登录,登录成功
driver.find_element_by_class_name("login_button").click()
# 点击我的专业课程
driver.find_element_by_link_text("我的专业课程").click()
# 点击计算机组成与结构
time.sleep(2)
driver.find_element_by_xpath('//*[@id="courseList"]/li[1]/p/a').click()
# 点击前去学习
time.sleep(2)
driver.find_element_by_xpath('//button[@]').click()
# 点击开始学习 进入新页面
time.sleep(2)
handles = driver.window_handles          #获取当前浏览器的所有窗口句柄
driver.switch_to.window(handles[-1])     #切换到最新打开的窗口
driver.find_element_by_xpath('//div[@]/a[@]/span[@id="btn_openCourse_2222"]').click()
# 循环播放所有课程目录
# 试播第一课
time.sleep(2)
handles = driver.window_handles          #获取当前浏览器的所有窗口句柄
driver.switch_to.window(handles[-1])     #切换到最新打开的窗口
driver.find_element_by_xpath('//*[@id="finish_0"]/a').click()

希望能帮到你呀~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/739573.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号