UI自动化滑动登录
一、使用OpenCV图像识别函数
1 import time
2 import cv2
3 import requests
4 from selenium import webdriver
5 from selenium.webdriver import ActionChains
6 from selenium.webdriver.common.by import By
7
8 def FindPic(target="../lib/bj.jpg", block="../lib/block.jpg"):
9 """
10 找出图像中最佳匹配位置
11 :param target: 目标即背景图
12 :param template: 模板即需要找到的图
13 :return: 返回最佳匹配及其最差匹配和对应的坐标
14 """
15 #读取图片
16 target_rgb = cv2.imread(target)
17 #灰度处理
18 target_gray = cv2.cvtColor(target_rgb, cv2.COLOR_BGR2GRAY)
19 #读取滑块
20 template_rgb = cv2.imread(block, 0)
21 #匹配缺口在背景图的位置
22 res = cv2.matchTemplate(target_gray, template_rgb, cv2.TM_CCOEFF_NORMED)
23 #获取最差和最佳匹配结果
24 value = cv2.minMaxLoc(res)
25 print(value)
26 # 返回最佳匹配的x坐标
27 return value[2][0]
二、登录页面代码
1 driver = webdriver.Chrome()
2 driver.implicitly_wait(10)
3
4 #打开网站
5 driver.get('https://faerge.com/login')
6 driver.maximize_window()
7 username = driver.find_element(by=By.XPATH, value='//*[@id="root"]/section/div[2]/div/div/div[2]/div/form/div[1]/input')
8 username.clear()
9 username.send_keys('x15191690047')
10
11 password = driver.find_element(by=By.XPATH, value='//*[@id="root"]/section/div[2]/div/div/div[2]/div/form/div[2]/input')
12 password.clear()
13 password.send_keys('953680003xp@')
14
15 login = driver.find_element(by=By.XPATH, value='//*[@id="root"]/section/div[2]/div/div/div[2]/div/form/button')
16 login.click()
17
18 time.sleep(2)
19
20 driver.switch_to.frame(driver.find_element(by=By.XPATH, value='//*[@id="tcaptcha_iframe"]'))
21
22 #获取图片地址
23
24 #背景图
25 ele_bj = driver.find_element(by=By.XPATH, value='//*[@id="slideBg"]')
26 src_bj = ele_bj.get_attribute('src')
27 #滑块图
28 ele_block = driver.find_element(by=By.XPATH, value='//*[@id="slideBlock"]')
29 src_block = ele_block.get_attribute('src')
30 print(src_bj)
31 print(src_block)
32
33 #下载背景图
34 img_bj = requests.get(src_bj).content
35 f = open('../lib/bj.jpg', mode='wb')
36 f.write(img_bj)
37 f.close()
38
39 #下载滑块图
40 img_block = requests.get(src_block).content
41 f = open('../lib/block.jpg', mode='wb')
42 f.write(img_block)
43 f.close()
44
45 x = FindPic('../lib/bj.jpg', '../lib/block.jpg')
46 print(x)
47
48 #图片左边到缺块长度减去x的值是26,680是图片实际长度,340是图片缩放长度
49 x = int(x*340/680)-26
50
51 #滑动方法selenium中ActionChains
52 action = ActionChains(driver)
53 #按住鼠标图片不松动
54 action.click_and_hold(ele_block).perform()
55 #移动鼠标
56 action.move_by_offset(x, 0).perform()
57 #松开鼠标
58 action.release(ele_block).perform()
UI自动化滑动登录的更多相关文章
- robot framework UI自动化之登录
前面已写环境的搭建,接下来就可以直接进行UI自动化的编写工作了 目录 1.准备工作 2.了解定位 3.一个登录案例 1.准备工作 第一步:需要使用chrome浏览器来测试,因此首先要有一个驱动,下载好 ...
- IDEA+java通过SSH来进行分析日志,实现UI自动化动态验证码登录
在我写自动化脚本的时候是要真实发送验证码才能往下进行UI自动化 思路:验证码会显示在哪些地方,手机短信?数据库存储?日志? 完整代码如下: package guanyu.tools; import c ...
- Appium UI自动化的那些梗
@作者 彭海波 转载请注明出处 前言 由于需求的快速迭代和敏捷测试的要求,在测试过程中引入自动化成为必不可少的手段.作为一个互联网测试团队,我们自然也引入了自动化测试这个环节.在众多的测试框架中,我们 ...
- Android手机QQ的UI自动化实践
本文首发于果的博客园,原文链接:https://www.cnblogs.com/yuxiuyan/p/14992682.html, 转载请注明出处. UI自动化 我们为什么要搞UI自动化 可能很多同学 ...
- UI自动化测试之Airtest
官方文档: https://airtest.doc.io.netease.com/ 本文我们讲解下Airtest的使用,主要学习目标有以下几点: (1)认识Airtest (2)了解Airtest能做 ...
- 【Android测试】UI自动化代码优化之路(临时发布, 随时删除)
◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/5993622.html 关于UI自动化的抱怨 听过不少人这样 ...
- 洗清UI自动化鸡肋说的不白之冤
人类文明发展的一个重要标识是工具的诞生,当人类开始制作工具来提高生产力时,就逐渐拉开了与其他生物的距离.曾在2013年,<Google如何测试软件>中提到的分层自动化金字塔,轰动业界.而在 ...
- 基于Selenium2+Java的UI自动化(4) - WebDriver API简单介绍
1. 启动浏览器 前边有详细介绍启动三种浏览器的方式(IE.Chrome.Firefox): private WebDriver driver = null; private String chrom ...
- Python—UI自动化完整实战
实战项目 均来源于互联网 测试报告2017年11月29日优化后的测试报告:https://github.com/defnngj/HTMLTestRunner 1.项目概述: 本实战已126邮箱为例子进 ...
随机推荐
- 什么时候使用session?什么时候使用application?
application:程序全局变量对象,对每个用户每个页面都有效session:用户全局变量,对于该用户的所有操作过程都有效
- 全网最硬核 Java 新内存模型解析与实验单篇版(不断更新QA中)
个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判.如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 i ...
- Numpy实现机器学习交叉验证的数据划分
Numpy实现K折交叉验证的数据划分 本实例使用Numpy的数组切片语法,实现了K折交叉验证的数据划分 背景:K折交叉验证 为什么需要这个?在机器学习中,因为如下原因,使用K折交叉验证能更好评估模型效 ...
- Numpy对数组按索引查询
Numpy对数组按索引查询 三种索引方法: 基础索引 神奇索引 布尔索引 基础索引 一维数组 和Python的List一样 二维数组 注意:切片的修改会修改原来的数组 原因:Numpy经常要处理大数组 ...
- Altium design使用日常故障总结
1.altiumdesigner09如何将不同的板子拼在一起发给工厂?打开这两个图,其中一个图ctrl+a,ctrl+c,打开另一个图pastespecial.放置时选取一边对齐.制版时告诉厂家做个V ...
- 前端进阶(8) - 前端开发需要了解的工具集合:webpack, eslint, prettier, ...
前端开发需要了解的工具集合:webpack, eslint, prettier, ... 前端开发需要了解的一些工具,这些工具能够帮助你在项目开发中事半功倍. 1. nrm: npm registry ...
- jquery+html5实现单张图片上传预览
js: if (window.File && window.FileReader && window.FileList && window.Blob){ ...
- 前端基础之CSS(1)
1.css3的新特性有哪些 (1)CSS3选择器(基本.属性.伪类具体见下) (2)CSS3边框与圆角 圆角border-radius 属性:border-top-left-radius 左上角 bo ...
- 前端面试题整理——手写简易jquery
class jQuery { constructor(selector) { const result = document.querySelectorAll(selector) console.lo ...
- Java中重载的应用
学习目标: 掌握Java方法的重载 学习内容: 1.重载定义 参数列表: 参数的类型 + 参数的个数 + 参数的顺序 方法签名: 方法名称 + 方法参数列表,在同一个类中,方法签名是唯一的,否则编译报 ...