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邮箱为例子进 ...
随机推荐
- cookie可设置哪些属性?httponly?
chrome控制台的application下可查看: cookie name 字段为一个cookie的名称. value 字段为一个cookie的值. domain 字段为可以访问此cookie的域名 ...
- 面试问题之C++语言:C与C++的区别
C是C++的基础,C++语言和C语言在很多方面是兼容的. C是结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出或实现过程(事务 ...
- springboot-访问数据库
在springboot中,默认的JPA实现是Hibernate,JPA是Java Persistence API的简称,中文名Java持久层API <!--数据库--> <depen ...
- 基于redis实现未登录购物车
springboot 工程 主要说明购物车流程(故将登录用户信息保存至session) 未登录时 将用户临时key 保存至cookie 有不足之处 请大佬指点 项目源码: https://github ...
- numpy入门—numpy是什么
numpy是什么?为什么使用numpy 使用numpy库与原生python用于数组计算性能对比
- jQuery Validate多实例讲解
规则 描述 required:true 必须输入的字段. remote:"check.php" 使用 ajax 方法调用 check.php 验证输入值. email:true 必 ...
- 探索前端黑科技——通过 png 图的 rgba 值缓存数据
本文系原创,欢迎转载,转载请注明作者信息项目地址:SphinxJS在线体验地址:https://jrainlau.github.io/sp... 说起前端缓存,大部分人想到的无非是几个常规的方案,比如 ...
- 使用Vue2+webpack+Es6快速开发一个移动端项目,封装属于自己的jsonpAPI和手势响应式组件
导语 最近看到不少使用vue制作的音乐播放器,挺好玩的,本来工作中也经常使用Vue,一起交流学习,好的话点个star哦 本项目特点如下 : 1. 原生js封装自己的跨域请求函数,支持promise调用 ...
- java中到底什么是继承?
1.何为继承?What is Inheritance? 在上图中,对于车来讲,汽车就是子类.对于汽车来讲,奔驰就是子类.车是汽车的基类,超类,或说父类.到底什么是继承?马克-to-win,子类把父类的 ...
- E-R图转换为关系模型
E-R模型如何转换成关系模型,这里我们分成三种情况进行讲解,分别是一对一,一对多和多对多. 1.一对一的情况: 有两种方法解决这个问题.第一个方法:可以单独对应一个关系模式,由各实体的主码构成关系模式 ...