文章目录

  • 1.EC判断页面是否加载成功
  • 2. 元素定位及填写
  • 3. 随机生成测试数据
  • 4. 精准截取验证码图片的思路
  • 5. 图片验证码的识别解决方案
  • 山野千里,只要在路上,内心就满是欢喜,继续坚持,继续加油啊!!!

1.EC判断页面是否加载成功

from selenium import webdriver
import time
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By# 全局定义注册页面地址
register_url = "http://www.5itest.cn/register"# 创建 driver 对象
driver = webdriver.Chrome()
driver.get(url=register_url)# 第一种延时操作,主动延时
# 加载 url 等待 5 秒
time.sleep(5)
# 判断是否进入了用户注册页:
# 通过title是否加载成功,来判断注册页面是否加载成功了,下面的打印结果说明了该对象存在于内存对象中也就是title加载成功了
# <selenium.webdriver.support.expected_conditions.title_contains object at 0x00000237FE954E48>
print(EC.title_contains("注册"))# 另一种延时操作,比time.sleep更优化一些,检查注册邮箱是否被加载出来,
service_agreement = driver.find_element_by_id("register_email")
locator = (By.ID, "register_email")
# 下面的打印结果说明了该对象存在于内存对象中也就是加载成功了
# <selenium.webdriver.remote.webelement.WebElement (session="ef6eb689955b964079ccd8bc565d59a5", element="574ba31b-0ff0-4b67-853b-3680eb751fe9")>
print(WebDriverWait(driver, 5).until(EC.visibility_of_element_located(locator)))# 执行完,关闭浏览器(否则一直加载驱动,导致执行环境内存被驱动耗尽)
driver.close()

2. 元素定位及填写

可以看到元素定位有多种方式,比较方便的是使用xpath,用法也简单,选中要定位的那一行右键copy,然后copy_xpath就行了。


下面尝试用几种方法定位:

from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By# 全局定义注册页面地址
register_url = "http://www.5itest.cn/register"# 创建 driver 对象
driver = webdriver.Chrome()
driver.get(url=register_url)# 查找主页页面元素并给它们填写对应的值
# 定位邮箱地址
# register_email = driver.find_element_by_id("register_email")
# print(register_email.get_attribute('placeholder')) # 获取placeholder的属性值:填写你常用的邮箱作为登录帐号
# register_email.send_keys("test@163.com")# # 定位用户名
# register_nickname = driver.find_element_by_xpath('//*[@id="register_nickname"]')
# print(register_nickname.get_attribute("placeholder")) # 获取placeholder的属性值:中、英文均可,最长18个英文或9个汉字
# register_nickname.send_keys("wang")# # 定位密码
# register_password = driver.find_element_by_name("password")
# register_password.send_keys('wang123')
# print(register_password.get_attribute('value'))   # 获取当前输入的值 : wang123# 定位验证码
captcha_code = driver.find_element_by_xpath('//*[@id="captcha_code"]')
captcha_code.send_keys('q2hs') # 验证码当然不能随便瞎输,这里只是测试是否定位到元素实现输入,后面会讲验证码识别
print(captcha_code.get_attribute("placeholder")) # 验证码

3. 随机生成测试数据

import random# 生成测试注册邮箱数据
for i in range(5):register_testMail = ''.join(random.sample('123456789abcdef', 8)) + "@163.com"print(register_testMail)# 生成测试用户名数据
for i in range(5):register_testUsername = ''.join(random.sample('abcdefghijk', 5))print(register_testUsername)'''
d3c4f72a@163.com
4aedf158@163.com
7d2ecba3@163.com
6d137fab@163.com
65b834e2@163.com
bdgfa
chbkj
ejifg
bfjeh
bgjfc
'''

4. 精准截取验证码图片的思路

以这个网站:http://www.5itest.cn/register
为例,抓包发现验证码图片url虽然不变,但每次请求返回来的都不一样,这就意味着我们用url获取图片再识别就没有效果,所以我们就另辟蹊径,直接截图定位把它抠出来再识别:

import time
from PIL import Image
from selenium import webdriverfrom selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
driver.get("http://www.5itest.cn/register")
driver.maximize_window()
time.sleep(5)
driver.save_screenshot('./images/big.png')
# capch = driver.find_element_by_xpath('//*[@id="getcode_num"]')
capch = driver.find_element_by_id('getcode_num')print(capch.location)
left = capch.location['x']
top = capch.location['y']
right = capch.size['width']+ left
low = capch.size['height'] + top
im = Image.open('./images/big.png')
# img = im.crop((left,top,right,low))  # 本来应该是这样大小,不知道时候跟系统有关,我的是win10系统必须乘以1.25才可
img = im.crop((left*1.25,top*1.25,right*1.25,low*1.25))
img.save('./images/code.png')

效果:

5. 图片验证码的识别解决方案

    1. 规则的,简单的可以用 pytesseract进行识别
      可以参考我这篇文章学习:
      python实现简单的验证码识别
    1. 复杂的,可以借助打码平台
      怎么个复杂法,比如以前的铁路12306官网登陆,给你一个名词,然后让你从6张图里选出两张和该名词相对应的,现在还好,已经整成滑块的了,还有一些网站的验证码是计算题,或者智能问答题之类的,这就比较不讲武德了,
      打码平台有很多,百度一下就知道,比如云打码、超级鹰等打码平台,这种专业的平台都有针对各种各样的验证码,看一下超级鹰的:

用法也很简单,官网都有代码示例,这种打码平台后台对接的肯定是人工,所以它是要收费的,1块钱1000题分,咳咳,果然是充钱才能变强哈!

    1. 用机器学习训练字体库
      可以用TensorFlow或者Pytorch自己训练模型,这个对没有接触过机器学习的朋友就比较有难度了,对数学知识要求比较高,想做这个的可以先试着去了解一下,这种方式耗时比上面两种更长,但做好了绝对让你成就感爆棚,收获满满的哈。

好了,到这里也该跟大家说再见了,创作不易,如果本文对你有用,请给俺点个赞吧,虽然我并不会因此获利,但这真的是对我的肯定与鼓舞,欢迎收藏加点赞哈。

山野千里,只要在路上,内心就满是欢喜,继续坚持,继续加油啊!!!

web自动化测试基础知识整合(一)相关推荐

  1. 软件测试 Web自动化测试 基础知识 HTML CSS JavaScript

    文章目录 1 HTML 1.1 HTML简述 1.1.2 常用基本标签 1.1.3 表格 1.1.4 表单(重点) 表单小结 HTML小结 2 CSS样式表 2.1 三种格式修改样式 2.1.1 行内 ...

  2. html+css基础知识整合 2021-08-30

    html基础知识整合 文章目录 **html基础知识整合** [web的组成] [HTML5基本语法] 常规标签(普通标签.双标签) [文章标签] [修饰标签] [特殊字符] [HTML注释] [列表 ...

  3. HTML基础知识整合复习总结

    HTML基础知识整合复习总结 ------------------------------------------------------------------------------------- ...

  4. Web前端基础知识整理

    1. 前端基础知识 文件分类 XML(扩展标记语言) 装载有格式的数据信息,用于各个框架和技术的配置文件描述 特点: 扩展名为.xml 内容区分大小写 标签要成对出现,形成容器,只能有一个 标签按正确 ...

  5. html clear属性值,【Web前端基础知识】clear使用方法

    [摘要] 前端即网站前台部分,运行在PC端,移动端等浏览器上展现给用户浏览的网页.下面是[Web前端基础知识]clear使用方法,小编建议有准备参加考试的备考生一定要合理规划时间,仔细阅读相关规定,提 ...

  6. Web自动化测试理论知识

    Web 自动化理论知识 1.自动化测试概述 概念:用工具代替/辅助人工完成完成软件测试活动的过程 特点:     可以对程序的新版本自动执行回归测试     可以执行一些手工测试困难或不可能进行的测试 ...

  7. Java WEB开发实战 之 第二部分:Web应用基础知识【私塾在线原创】

    基础知识概述 Internet 中文名也称"因特网"或"国际互联网",是一个由各种独立运行和管理的计算机网络组成的全球范围的计算机网络,网络间可以畅通无阻地交换 ...

  8. web service基础知识

    Web服务基础 用户访问网站的基本流程 我们每天都会用web客户端上网,浏览器就是一个web客户端,例如谷歌浏览器,以及火狐浏览器等. 当我们输入www.oldboyedu.com/时候,很快就能看到 ...

  9. 01.软件测试基础知识整合

    软件测试基础 前言 一.什么是软件测试 二.软件测试的目的 三.软件测试的基本流程 四.测试分类 五.测试用例 1.什么是测试用例 2.测试用例的重要性 3.测试用例的设计方法 4.测试点分析 5.如 ...

最新文章

  1. python 图像分析自然纹理方向与粗细代码_python skimage图像处理(二)
  2. 在.Net Micro Framework中显示汉字
  3. mysql获取删除的条数_如何从mysql表中删除数百万条记录而不会减速
  4. CrowdStrike加入VirusTotal阵营
  5. [架构设计]反向(或者后向)插件系统设计
  6. selenium经过WebDriverWait实现ajax测试
  7. mysql5.1编译安装centos7_CentOS7下 Nginx1.13.5 + PHP7.1.10 + MySQL5.7.19 源码编译安装
  8. nodejs debugging
  9. java 输出全部小写_输入小写,输出大写,为什么报错?
  10. 企业微信_Windows版本调试
  11. mpythonx下载_【掌控】mpythonX:乐动盒子
  12. 蒙特卡罗仿真(1):入门求生指南(Python实例)
  13. 计算机上缺少vsix安装程序,使用MSI安装程序部署VSIX
  14. Win7怎么设置自动关机?Win7设置自动关机的方法
  15. 几种字符集与LPTSTR、LPCSTR、LPSTR、LPCTSTR、LPWSTR、LPCWSTR的意义
  16. Matlab基本函数-floor函数
  17. ubuntu20.04安装搜狗sogou输入法
  18. NFT自由人数字艺术藏品有收藏价值吗?
  19. 5G 频段内CA培训
  20. 大数据基础知识总结和大数据方面的核心技术

热门文章

  1. 科学计算机中logo,简单做了个Logo~
  2. python - - 函数 - - 内置函数和匿名函数
  3. 禁止scrollview上下拖动
  4. U3 精通U盘分区与启动-孙宇彤-专题视频课程
  5. indesign选中不了图片删除_有办法了!批量删除多个Word页眉页脚
  6. python新年祝福代码_python 新年祝福
  7. 集成讯飞SDK,实现离线命令词、离线语音合成、离线唤醒,语音在线/离线听写
  8. MySQL到Elasticsearch实时同步构建数据检索服务的选型与思考
  9. [学习笔记] python深度学习---第三章 神经网络入门
  10. 【元宇宙系列】初识元宇宙(Mateverse)