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邮箱为例子进 ...
随机推荐
- IO、NIO和AIO的区别
IO和NIO的区别:其本质就是阻塞和非阻塞的区别. 阻塞概念:应用程序在获取网络数据的时候,如果网络传输数据很慢,那么久一直等着,知道传输完毕为止.非阻塞概念:应用程序直接可以获取已经准备就绪好的 ...
- Java代码规范总结,更新持续中
1. 实例的开启与关闭 var zkClient: ZooKeeper = null try { zkClient = new ZooKeeper(getZkUrl(), 2000, new Watc ...
- Ajax的核心的对象是什么?
Ajax的核心对象是XMLXMLHttpRequest 对象. XMLHttpRequest提供不重新加载页面的情况下更新网页,在页面加载后在客户端向服务器请求数据,在页面加载后在服务器端接受数据,在 ...
- 如果leader crash时,ISR为空怎么办?
kafka在Broker端提供了一个配置参数:unclean.leader.election,这个参数有两个值:true(默认):允许不同步副本成为leader,由于不同步副本的消息较为滞后,此时成为 ...
- Element-UI资源原型库
Element-UI v2.0.0版本 Axure和Sketch库: 链接:https://pan.baidu.com/s/1LdsEh8BKQBjcWBKV5yQilQ 提取码:1xqn
- 如何实现集群中的 session 共享存储?
Session 是运行在一台服务器上的,所有的访问都会到达我们的唯一服务器上,这 样我们可以根据客户端传来的 sessionID,来获取 session,或在对应 Session 不 存在的情况下(s ...
- Redis 最适合的场景?
1.会话缓存(Session Cache) 最常用的一种使用 Redis 的情景是会话缓存(session cache).用 Redis 缓存会 话比其他存储(如 Memcached)的优势在于:Re ...
- GC日志浅析
//java 开发环境,使用HotSpot的虚拟机,64位,windows 开发环境 Java HotSpot(TM) 64-Bit Server VM (25.151-b12) for window ...
- Java设置方法模板
- ML、DL及RL介绍和区别
前言 在刚入门的时候,我们很容易被这些词语弄得眼花缭乱,如人工智能.机器学习.深度学习及强化学习等等.它们之间互相联系,却有一定区别.我们学习人工智能AI,需要对这些词语有一定的概念,不然,研究了这么 ...