欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

PythonSeleniumUI自动化问题

时间:2023-05-26
Python Selenium UI 自动化问题汇总

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

import timetime.sleep(2)

添加强制等待时间

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

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

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

贴上完整代码:

from selenium import webdriverfrom selenium.webdriver.chrome.service import Servicefrom PIL import Imageimport timeimport 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()

希望能帮到你呀~

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。