Selenium+Python 自动化操控登录界面(有简单验证码图片校验)
来源:互联网 发布:2017淘宝违禁词有哪些 编辑:程序博客网 时间:2024/06/11 11:18
从最简单的Web浏览器的登录界面开始,登录界面如下:
进行Web页面自动化测试,对页面上的元素进行定位和操作是核心。而操作又是以定位为前提的,因此,对页面元素的定位是进行自动化测试的基础。
页面上的元素就像人一样,有各种属性,比如元素名字,元素id,元素属性(class属性,name属性)等等。webdriver就是利用元素的这些属性来进行定位的。
可以用于定位的常用的元素属性:
id
name
class name
tag name
link text
partial link text
xpath
css selector
对应于webdriver中的定位方法分别是:
driver.find_element_by_name()——最常用,简单
driver.find_element_by_id()——最常用,简单
driver.find_element_by_class_name()
driver.find_element_by_tag_name()——最不靠谱
driver.find_element_by_link_text()——定位文字连接好用
driver.find_element_by_partial_link_text()——定位文字连接好用
driver.find_element_by_xpath()——最灵活,万能
driver.find_element_by_css_selector()
上面是定位一个元素的方法,相应的webdriver也有定位一组元素的方法:
driver.find_elements_by_name()
driver.find_elements_by_id()
driver.find_elements_by_class_name()
driver.find_elements_by_tag_name()
driver.find_elements_by_link_text()
driver.find_elements_by_partial_link_text()
driver.find_elements_by_xpath()
driver.find_elements_by_css_selector()
由界面可以看出,主要需要三个输入数据,首先我们要掌握F12查看页面元素。
右键文本框查看元素(以用户名文本框为例)
在该文本框中输入用户名“XXX”,代码如下:
driver.find_element_by_id("os_username").send_keys("XXX")
密码同理。
验证码操作较为复杂,需要用到PIL+tesseract+image代码库,需提前准备。我的思路是首先采用driver.save_screenshot(“test.png”)截取该完整登录界面并保存,而后选取验证码区域进行截取保存,区域选取采用region = (left.x, left.y, right.x, right.y),其中(left.x,left.y)为左上角像素坐标,(right.x,right.y)为右下角像素坐标,采用nimg = img.crop(region)来截取验证码区域并用nimg.save(“new_test.png”)来保存。最后采用pytesseract.image_to_string(image)方法将图片验证码转换成字符串。具体代码实现详见附后代码。
三个输入完成后,即是登录按钮的点击,F12查看元素如图:
代码如下:
driver.find_element_by_class_name("btnSub").click()
此时即可完成登录,注意,该识别验证码的方法只能识别简单验证码,过于复杂的识别会有错误。
注:若登陆名为汉字需要使用
G = u”登录名”
driver.find_element_by_id(“os_username”).send_keys(G)
详细代码
# -*- coding: utf-8 -*- #coding=UTF-8 from selenium import webdriver from PIL import Image import pytesseract driver = webdriver.Chrome() driver.get('http://XXX') #该处为具体网址 driver.refresh() #刷新页面 driver.maximize_window() #浏览器最大化 driver.save_screenshot("test.png") img = Image.open("test.png") region = (940, 355, 1030, 385)#根据具体情况修改 nimg = img.crop(region) nimg.save("new_test.png") image = Image.open("new_test.png") vcode = pytesseract.image_to_string(image) driver.find_element_by_id("os_username").send_keys("XXX") driver.find_element_by_id("password").send_keys("XXX") driver.find_element_by_id("RandomCode").send_keys(vcode) driver.find_element_by_class_name("btnSub").click()
- Selenium+Python 自动化操控登录界面(有简单验证码图片校验)
- Python selenium自动化识别验证码模拟登录操作(二)
- python+selenium识别验证码并登录
- python+selenium识别验证码并登录
- Selenium自动化测试:如何使用cookie跳过验证码登录
- python接口自动化4-绕过验证码登录(cookie)
- Java selenium无界面爬取需要登录的页面+验证码截取+验证码识别python tensorflow
- Python selenium自动化模拟登录操作(一)
- selenium Python自动化测试(基本的验证方式)
- python---post请求数据包,正常模拟登录,图片验证码未自动化,phtesseract
- python---POST/GET请求数据包,图片验证码自动化识别,pytesseract,模拟用户一次正常登录
- Ext做的简单登录界面(验证码刷新)
- Python selenium自动化测试 登录CSDN实例
- spring security登录校验时检查图片验证码
- JavaWeb简单的单点登录、验证码校验功能实现
- selenium python 验证码
- 简单自动化元素定位selenium python
- selenium+python 自动化(一)
- OpenJudge百炼-1936-全在其中-C语言-字符串处理
- Android Class类加载机制
- MYSQL简单的binlog恢复测试
- 海量数据处理的SQL性能优化
- 交叉表查询
- Selenium+Python 自动化操控登录界面(有简单验证码图片校验)
- .NET编程(02) 反射
- Git高级教程- 远程仓库版本回退方法
- 小工具-jsp实现验证码功能
- Leetcode-Pointer Magic
- F
- java任务--对角线相加
- 事务
- C#笔记(12)任务栏加图标,点击图标后显示