从零开始Web自动化(三):通过selenium,9行代码实现打字网站的自动打字
写在前面:
这个专栏主要是分享一些python、Web自动化的相关知识。
需要你具备一定的python基础,参考教程:廖雪峰python教程
掌握红框中的内容即可!
通过实战项目让你学会包括:python、selenium、测试报告、监听、特殊元素的定位方式的处理以及自动化框架的搭建,
最后更高效的企业级自动化测试方法(零代码,图形化Web自动化)的分享。
一、实现效果:
看着很厉害的样子,实际实现起来非常简单!!!
二、源码
from selenium import webdriver
from selenium.webdriver.common.by import Bybrowser = webdriver.Chrome() # 启动浏览器
browser.get('https://dazi.kukuw.com/') # 打开网站
browser.find_element(By.XPATH, '//*[@id="form"]/ul[6]/li[2]/input').click() # 点击开始测试按钮
for i in range(0, 60):x_v = browser.find_element(By.XPATH, '''//*[@id="i_''' + str(i) + '''"]/div/span''').text + ' 'for j in x_v:browser.find_element(By.XPATH, '''//*[@id="i_''' + str(i) + '''"]/input[2]''').send_keys(j)
三、具体分析
browser = webdriver.Chrome()
1.第一行代码用于启动chrome浏览器,它可以携带很多参数,但我们常用的就两种:
一种是chromedriver的路径:
browser = webdriver.Chrome("E:\ChromDriver\chromedriver.exe")
第二种是携带一些启动设置,比如:隐藏浏览器界面启动chrome
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless') # 隐藏浏览器运行
driver = webdriver.Chrome(options=chrome_options)
当然,如果你想启动其他浏览器的话,例如:火狐,代码就需要这样写:
browser = webdriver.Firefox()
2.第二行代码的意思就是访问一个网址:
browser.get('https://dazi.kukuw.com/')
3.第三行代码:通过xpath定位方式定位一个元素,对它执行点击操作:
browser.find_element(By.XPATH, '//*[@id="form"]/ul[6]/li[2]/input').click() # 点击开始测试按钮
定位方式除了Xpath还有其他的,比如:id、css选择器、name等。
但我们不需要过于的花时间去学习它们,了解就够了,因为在工作中没谁会关心你用什么定位。
那如何进行快捷简便的定位呢?
我们可以利用工具:
chrome浏览器自带了定位方式的获取工具,按下F12(右键鼠标,点击"检查")也可以,按图中的步骤操作就可以获取到需要操作的元素地址
当然会出现工具获取的定位地址,代码跑起来还是定位的不到的情况,
这个就需要自己根据实际情况切换定位方式或者自写xpath代码才能解决这个问题了,庆幸的是,这类的元素比较少。我在工作中遇到的就是页面搜索栏的下拉菜单有多个,但它们是继承的同一个组件,导致xpath定位只能定位到第一个被打开的下拉菜单,这个时候就需要自己写xpath定位元素来解决这个问题。
当时写的代码:xpath('//div[contains(@class,"a") and contains(@class,"b")]') //它会取class同时有a和b的元素
selenium对元素的操作有很多种:包括图中使用的click(点击)、send_keys()输入内容、clear(清空内容)等。
这些也不需要刻意的去记,写多了自然就熟悉了
4.下面代码块的意思:循环遍历,获取第1行需要打字的内容,然后再循环遍历需要打字的内容,一个个的打出来
for i in range(0, 60):x_v = browser.find_element(By.XPATH, '''//*[@id="i_''' + str(i) + '''"]/div/span''').text + ' 'for j in x_v:browser.find_element(By.XPATH, '''//*[@id="i_''' + str(i) + '''"]/input[2]''').send_keys(j)
通过chrome的定位工具可以获取到要输入元素的地址
第一行元素地址:
//*[@id="i_0"]/div/span
第二行元素地址:
//*[@id="i_1"]/div/span
第三行元素地址:
//*[@id="i_2"]/div/span
发现了每增加一行,数字会+1,这就找到规律了!
所以就可以写一个循环来获取每行的需打字内容的数据
for i in range(0, 60):x_v = browser.find_element(By.XPATH, '''//*[@id="i_''' + str(i) + '''"]/div/span''').text + ' '#加空格字符串是因为按空格才会换行print('第%d行数据:' % i, x_v)
-------------------------输出信息------------------------------
第0行数据: Once upon a time a little girl tried to make a living by selling matches in the
第1行数据: street. It was New Year's Eve and the snowed streets were deserted. From brightly
第2行数据: lit windows came the tinkle of laughter and the sound of singing. People were
第3行数据: getting ready to bring in the new year. But the poor little match seller sat
第4行数据: sadly beside the fountain. Her ragged dress and worn shawl did not keep out the
第5行数据: cold and she tried to keep her bare feet from touching the frozen ground. She
这样的话,我们只需要在获取到每行数据的时候,进行send_keys就行了
for j in x_v:browser.find_element(By.XPATH, '''//*[@id="i_''' + str(i) + '''"]/input[2]''').send_keys(j)
这样就实现了自动打字的功能!
四、被检测到作弊了
下一遍文章会讲解如何过检测以及python方法的的封装,让你的代码更可读
从零开始Web自动化(三):通过selenium,9行代码实现打字网站的自动打字相关推荐
- WEB自动化-(RFS)RobotFramework+Selenium框架介绍测试流程详解
各个驱动下载地址: http://www.seleniumhq.org/download/ 一.RFS介绍 1.概念 RFS框架:RobotFramework+Selenium框架 2.特点 2.1通 ...
- 从零开始Web自动化(四):如何过打字网站的作弊检测,从而实现排行榜第一
一.分析和解决思路 上篇博文中,我们的程序被检测出作弊了,那如何过检测呢? 思路: 我们打的太快了,完全超出了人类的极限. 而且也不可能一直都是一个速度,也不可能每个字母都打正确. 那我们要让程序打的 ...
- 4行代码搞定iframe高度自动变化,完美兼容(转)
为什么80%的码农都做不了架构师?>>> 本帖转自: http://www.iteye.com/topic/839143 跨域问题 :http://ued.alimama.co ...
- 30行代码实现微信朋友圈自动点赞
首先祝大家新年快乐,过年了,允许我水一篇博客.不知道大家都回老家了没,不过我是没有回去,晚上吃完年夜饭看到很多人发朋友圈,为了增进和大家的友谊,于是就想着给大家点个赞,无奈内容太多了,就搞个自动化脚本 ...
- 百行代码构建神经网络黑白图片自动上色系统
使用神经网络对图片进行风格化渲染是计算机视觉领域的热门应用之一.本文将向你介绍一种简单而有效的黑白图片上色方法,仅需 100 行代码,你也可以搭建自己的神经网络,几秒钟内让计算机自动完成手动工作需要几 ...
- 100行代码教你教务系统自动抢课!
帮助广大学生解决抢课问题!自动抢课!! 100行代码帮你实现抢课! 本项目使用了python中splinter的API接口用来操作页面交互,用了twilio用来给手机发送短信通知抢课成功. 欢 ...
- 20行代码让你的电脑自动合成大西瓜!这么厉害不来体验一下吗?
最近的时间里,想必大家都被"合成大西瓜"这个游戏刷屏,无论是微博,还是B站,乃至是微信公众号,都有很多博主和up主们推荐. 合成大西瓜的游戏方式其实同<2048>游戏非 ...
- web自动化学习之selenium安装喝浏览器驱动和元素定位
selenium安装卸载 安装 pip install selenium 查看 pip show selenium 卸载 pip uninstall selenium 快捷键: ctrl+alt+sp ...
- Python web 开发:部署一个3行代码的wsgi app
通过前面的两篇: Python Web开发:从 wsgi 开始 Python Web开发:开发wsgi中间件 我们已经知道我们平时开发的 django.flask 等 python web 项目本质上 ...
最新文章
- laytpl语法_layui语法基础
- Ubuntu14.04下使用apt-get命令傻瓜式安装ffmepg成功
- “我工作八年,换了四家小公司,今后的职业生涯该怎么走?”
- java多态/重载方法——一个疑难代码引发的讨论
- Can't connect to X11 window server using 'localhos
- [ Keil ] keil4工程转keil5方法
- 数据库简单查询——查询的条件
- 视频文件服务器加速,百度云加速视频加速缓存设置教学
- ipvs 导致syn 重传问题
- 常用密码学论文查找网站
- springcloud config非对称加密
- 可能你需要一个王者荣耀刷金币神器(解除网瘾)
- Chrome源码剖析
- 【selenium实例一】网易云歌单封面图片
- 关于Linux的介绍与安装
- LDAP未授权漏洞验证
- 一个风靡全球的游戏(需要大家来参加)!!!
- Linux保护ssh的三把锁
- Html中Form表单案例综合分析
- 7-1 哈利·波特的考试 (25分)
热门文章
- 今天的码农女孩学习了关于python基础的小知识
- 音乐分享 html,支付宝朋友圈可以分享音乐嘛
- JavaScript中matches和match方法
- antd去掉表格边框
- java 图片压缩100k_Java 实现图片压缩的两种方法
- vsftpd 权限 600 不能下载 vsftpd 不能删除 vsftpd 配置文件 linux 搭建 ftp 服务器
- 【十五】【vlc-android】vlc-sout流媒体输出端源码实现分析【Part 3】【02】
- 985大学计算机专业保研率排名,国内最好考的几所985大学,虽然不是太出名,但保研率极高!...
- 爬取豆瓣电影名称及评论绪论
- 前端—CSS层叠样式表