从零开始Web自动化(三):通过selenium,9行代码实现打字网站的自动打字

简介: 从零开始Web自动化(三):通过selenium,9行代码实现打字网站的自动打字

image.png


通过实战项目让你学会包括:python、selenium、测试报告、监听、特殊元素的定位方式的处理以及自动化框架的搭建,

最后更高效的企业级自动化测试方法(零代码,图形化Web自动化)的分享。


一、实现效果:

image.gif


看着很厉害的样子,实际实现起来非常简单!!!


二、源码

from selenium import webdriver
from selenium.webdriver.common.by import By
browser = 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(右键鼠标,点击"检查")也可以,按图中的步骤操作就可以获取到需要操作的元素地址

2021071615293988.png


当然会出现工具获取的定位地址,代码跑起来还是定位的不到的情况,

这个就需要自己根据实际情况切换定位方式或者自写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的定位工具可以获取到要输入元素的地址

20210716154310923.png

第一行元素地址:


//*[@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)

这样就实现了自动打字的功能!


四、被检测到作弊了


20210716155455555.png

下一遍文章会讲解如何过检测以及python方法的的封装,让你的代码更可读

目录
相关文章
|
1月前
|
数据采集 测试技术 Python
自动化淘宝秒杀:使用Selenium WebDriver的实战指南
本文详细介绍了如何利用Selenium WebDriver自动化淘宝秒杀操作,包括环境配置、代码实现及注意事项,旨在帮助读者提升秒杀成功率,同时提醒合理使用以遵守平台规则。
82 8
|
2天前
|
Web App开发 数据采集 JavaScript
CDP与Selenium相结合——玩转网页端自动化数据采集/爬取程序
本文介绍了Selenium、Chrome DevTools及Chrome DevTools Protocol (CDP) 的基本功能与应用。Selenium是一款开源自动化测试工具,适用于网页端应用程序测试和数据采集,具备跨平台特性。Chrome DevTools内置浏览器中,提供调试、分析Web应用程序的功能,包括元素、控制台、源代码和网络选项卡等。CDP是一套用于与Chromium内核浏览器通信的API,支持自动化测试和性能分析。文中还展示了Selenium与CDP结合使用的示例,如捕获网络请求数据和打印网页内容,并推荐了相关书籍和资源以供深入学习。
66 39
CDP与Selenium相结合——玩转网页端自动化数据采集/爬取程序
|
11天前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
61 19
Selenium IDE:Web自动化测试的得力助手
|
13天前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
95 17
Selenium:强大的 Web 自动化测试工具
|
1月前
|
人工智能 搜索推荐 PHP
PHP在Web开发中的璀璨星辰:构建动态网站的幕后英雄###
【10月更文挑战第25天】 本文将带您穿越至PHP的宇宙,揭示其作为Web开发常青树的奥秘。通过生动实例与深入解析,展现PHP如何以简便、高效、灵活的姿态,赋能开发者打造动态交互式网站,同时不忘探讨其在新时代技术浪潮中面临的挑战与机遇,激发对技术创新与应用的无限思考。 ###
36 1
|
1月前
|
Web App开发 测试技术 数据安全/隐私保护
自动化测试的魔法:使用Python进行Web应用测试
【10月更文挑战第32天】本文将带你走进自动化测试的世界,通过Python和Selenium库的力量,展示如何轻松对Web应用进行自动化测试。我们将一起探索编写简单而强大的测试脚本的秘诀,并理解如何利用这些脚本来确保我们的软件质量。无论你是测试新手还是希望提升自动化测试技能的开发者,这篇文章都将为你打开一扇门,让你看到自动化测试不仅可行,而且充满乐趣。
|
1月前
|
Web App开发 设计模式 JavaScript
自动化测试之美:如何利用Selenium实现Web应用的高效测试
【10月更文挑战第29天】在软件开发的世界中,测试是确保产品质量的关键步骤。本文将带你了解如何使用Selenium这一强大的自动化测试工具,提高Web应用测试的效率和准确性。通过实际案例,我们将探索Selenium的核心功能及其在现代软件开发中的应用,旨在帮助读者掌握自动化测试的精髓,从而提升软件测试工作的整体效能。
44 0
WK
|
1月前
|
安全 Java 编译器
C++和Java哪个更适合开发web网站
在Web开发领域,C++和Java各具优势。C++以其高性能、低级控制和跨平台性著称,适用于需要高吞吐量和低延迟的场景,如实时交易系统和在线游戏服务器。Java则凭借其跨平台性、丰富的生态系统和强大的安全性,广泛应用于企业级Web开发,如企业管理系统和电子商务平台。选择时需根据项目需求和技术储备综合考虑。
WK
87 0
|
2月前
|
Web App开发 Java 测试技术
一、自动化:web自动化。Selenium 入门指南:从安装到实践
一、自动化:web自动化。Selenium 入门指南:从安装到实践
55 0
|
2月前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
65 4