自动化工具 Selenium 的使用

简介: 自动化工具 Selenium 的使用

前言


Selenium 是一个开源的自动化测试工具,支持各种浏览器,并且可以模拟用户对浏览器的各种操作。Selenium 可以用来模拟人类用户的点击、输入等行为,从而实现自动化爬取网页的目的。


Selenium 的基本使用


在使用 Selenium 之前,需要先安装 Selenium 库和对应的浏览器驱动。Selenium 可以支持多种浏览器,每种浏览器需要下载对应的浏览器驱动。安装方法可以参考官方文档:https://www.selenium.dev/documentation/en/getting_started_with_webdriver/browsers/


(1)使用 Selenium 打开网页

下面是使用 Selenium 打开百度首页的代码:

from selenium import webdriver
 
# 打开浏览器
browser = webdriver.Chrome()
 
# 打开百度首页
url = 'https://www.baidu.com/'
browser.get(url)
 
# 关闭浏览器
browser.quit()

其中,webdriver.Chrome() 表示使用 Chrome 浏览器,如果要使用其他浏览器,则需要更改这里的代码。browser.get(url) 表示打开网页。最后使用 browser.quit() 关闭浏览器。


(2)使用 Selenium 模拟登录

下面是使用 Selenium 模拟登录知乎的代码:

from selenium import webdriver
 
username = 'your_username'
password = 'your_password'
 
# 打开浏览器
browser = webdriver.Chrome()
 
# 打开知乎登录页面
url = 'https://www.zhihu.com/signin'
browser.get(url)
 
# 输入用户名和密码
input_name = browser.find_element_by_xpath('//*[@id="root"]/div/main/div/div/div/div[1]/div[2]/div/form/div[1]/div[2]/div[1]/input')
input_name.send_keys(username)
input_password = browser.find_element_by_xpath('//*[@id="root"]/div/main/div/div/div/div[1]/div[2]/div/form/div[1]/div[2]/div[2]/input')
input_password.send_keys(password)
 
# 点击登录按钮
btn_submit = browser.find_element_by_xpath('//*[@id="root"]/div/main/div/div/div/div[1]/div[2]/div/form/button')
btn_submit.click()
 
# 关闭浏览器
browser.quit()

其中,find_element_by_xpath() 方法可以根据 XPath 获取元素,send_keys() 方法可以输入文本,click() 方法可以模拟点击。这里只是一个简单的示例,实际网站可能需要更复杂的操作。


(3)使用 Selenium 模拟翻页

下面是使用 Selenium 模拟翻页豆瓣电影 TOP250 的代码:

from selenium import webdriver
 
# 打开浏览器
browser = webdriver.Chrome()
 
# 打开豆瓣电影 TOP250
url = 'https://movie.douban.com/top250'
browser.get(url)
 
# 获取下一页按钮
btn_next = browser.find_element_by_xpath('//*[@id="content"]/div/div[1]/div[2]/a[3]')
 
# 翻页
while True:
    # 获取所有电影信息
    movies = browser.find_elements_by_xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[1]/a/span[1]')
 
    # 输出电影名称
    for movie in movies:
        print(movie.text)
 
    # 判断是否到达最后一页
    if btn_next.get_attribute('class') == 'next':
        btn_next.click()
    else:
        break
 
# 关闭浏览器
browser.quit()

其中,find_elements_by_xpath() 方法可以获取多个元素,get_attribute() 方法可以获取元素的属性。这里使用了一个 while 循环来不断翻页,直到到达最后一页为止。


Selenium 的进阶使用


除了基本使用外,Selenium 还有一些进阶的用法,例如使用 Chrome 开发者模式、添加代理、使用无头浏览器等。


(1)使用 Chrome 开发者模式

Chrome 开发者模式可以让开发者更方便地进行调试和测试,其中就包括了 Selenium 的自动化测试。使用 Chrome 开发者模式可以更直接地获取元素的 XPath 或 CSS Selector 等信息,以便 Selenium 使用。


使用方式如下:

from selenium import webdriver
 
# 打开 Chrome 开发者模式
options = webdriver.ChromeOptions()
options.add_experimental_option('debuggerAddress', '127.0.0.1:9222')
browser = webdriver.Chrome(options=options)
 
# 获取页面元素
# ...
 
# 关闭浏览器
browser.quit()

其中,'debuggerAddress': '127.0.0.1:9222' 表示使用 Chrome 开发者模式,9222 是 Chrome 调试的端口号。使用 Chrome 开发者模式后,浏览器会自动打开并进入调试模式,此时可以直接在浏览器中操作获取元素的 XPath 或 CSS Selector 等信息。


(2)添加代理

Selenium 可以方便地使用代理,只需要在 ChromeOptions 中设置即可。


使用方式如下:

from selenium import webdriver
 
proxy = '127.0.0.1:8080'
 
# 设置代理
options = webdriver.ChromeOptions()
options.add_argument('--proxy-server=http://' + proxy)
browser = webdriver.Chrome(options=options)
 
# 获取页面元素
# ...
 
# 关闭浏览器
browser.quit()

其中,'--proxy-server=http://' + proxy 表示设置代理服务器的地址和端口号,此处的 proxy 可以是一个 IP 地址或者域名。


(3)使用无头浏览器

在开发中,有时候不需要真正地打开浏览器,只需要获取网页源码即可。这时候可以使用无头浏览器,它可以在后台执行并获取网页源码,不会弹出浏览器窗口。


使用方式如下:

from selenium import webdriver
 
# 使用无头浏览器
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
browser = webdriver.Chrome(options=options)
 
# 获取页面源码
url = 'https://www.baidu.com/'
browser.get(url)
page_source = browser.page_source
 
# 关闭浏览器
browser.quit()

其中,'--headless' 表示使用无头浏览器,'--disable-gpu' 表示禁用 GPU 加速。使用无头浏览器后,需要使用 browser.page_source 属性获取页面源码。


总结

以上就是 Selenium 的基本使用和进阶用法,Selenium 可以方便地模拟用户行为,实现自动化爬取网页的目的。当然,使用 Selenium 也有一些缺点,例如速度较慢、需要占用较多的系统资源等,使用时需要注意。


相关文章
|
4天前
|
Web App开发 Java 测试技术
《手把手教你》系列技巧篇(五十六)-java+ selenium自动化测试-下载文件-上篇(详细教程)
【5月更文挑战第20天】本文介绍了自动化测试中如何实现无弹窗下载文件,主要针对Firefox浏览器。作者指出,通常的下载操作包括点击下载按钮,但这里讨论的是避免下载弹窗直接保存文件的方法。文章详细讲解了通过设置Firefox参数(如`browser.download.dir`、`browser.helperApps.neverAsk.saveToDisk`等)来实现这一功能,并给出了Java Selenium的示例代码,展示了如何创建FirefoxProfile并进行相关设置,以及如何启动浏览器和执行下载操作。
18 0
《手把手教你》系列技巧篇(五十六)-java+ selenium自动化测试-下载文件-上篇(详细教程)
|
4天前
|
Web App开发 测试技术 API
自动化测试工具Selenium的深度解析
【5月更文挑战第27天】本文旨在深入剖析自动化测试工具Selenium,探讨其架构、原理及应用。通过对其核心组件、运行机制及在实际项目中的应用案例进行详细解读,以期为软件测试人员提供全面、深入的理解与实践指导。
|
2天前
|
Java 测试技术 Python
《手把手教你》系列技巧篇(五十八)-java+ selenium自动化测试-分页测试(详细教程)
【5月更文挑战第22天】本文介绍了自动化测试分页的实现方法。首先,文章提出了测试分页时关注的三个关键点:总页数、当前页数和页码导航的可用性。接着,作者分享了一个实用网站([https://www.jq22.com/](https://www.jq22.com/))以找到示例进行实践。在代码部分,展示了使用Java和Selenium进行自动化测试的示例代码,包括获取总页数、遍历所有页面及判断当前页面等操作。最后,简要总结了分页自动化测试的实现过程。
13 1
|
2天前
|
JSON 数据管理 测试技术
自动化测试工具Selenium Grid的深度应用分析深入理解操作系统的内存管理
【5月更文挑战第28天】随着互联网技术的飞速发展,软件测试工作日益复杂化,传统的手工测试已无法满足快速迭代的需求。自动化测试工具Selenium Grid因其分布式执行特性而受到广泛关注。本文旨在深入剖析Selenium Grid的工作原理、配置方法及其在复杂测试场景中的应用优势,为测试工程师提供高效测试解决方案的参考。
|
2天前
|
Web App开发 前端开发 Java
|
2天前
|
Web App开发 Java 测试技术
《手把手教你》系列技巧篇(五十七)-java+ selenium自动化测试-下载文件-下篇(详细教程)
【5月更文挑战第21天】本文介绍了自动化测试中如何实现无弹窗下载文件,特别针对Chrome浏览器。通过设置`download.default_directory`和`profile.default_content_settings.popups`,可以避免下载弹窗并指定下载路径。示例代码展示了如何使用Java和Selenium实现这一功能,包括导入相关库、设置ChromeOptions和执行下载操作。最后,文章提到虽然没有介绍IE浏览器的下载方法,但已有Chrome和Firefox的方法已足够应对大多数需求。
20 0
|
3天前
|
安全 测试技术
现代软件测试中的自动化工具与挑战
传统的软件测试方法已经无法满足日益复杂的软件开发需求,因此自动化测试工具应运而生。本文将探讨现代软件测试中自动化工具的发展现状和面临的挑战,以及如何克服这些挑战提高测试效率和质量。
11 0
|
3天前
|
Cloud Native jenkins 测试技术
软件测试中的自动化工具与挑战
在当今快速发展的软件行业中,软件测试是确保产品质量和稳定性的重要环节。随着软件规模的不断扩大和复杂度的增加,传统的手动测试已经无法满足需求。因此,自动化测试工具应运而生,能够提高测试效率、降低成本,并且减少人为错误。本文将探讨软件测试中常用的自动化工具以及在实践中所面临的挑战。
12 0
|
3天前
|
安全 数据管理 测试技术
网络安全与信息安全:防范漏洞、加强加密与提升安全意识深入探索自动化测试框架的设计原则与实践应用化测试解决方案。文章不仅涵盖了框架选择的标准,还详细阐述了如何根据项目需求定制测试流程,以及如何利用持续集成工具实现测试的自动触发和结果反馈。最后,文中还将讨论测试数据管理、测试用例优化及团队协作等关键问题,为读者提供全面的自动化测试框架设计与实施指南。
【5月更文挑战第27天】 在数字化时代,网络安全与信息安全已成为维护国家安全、企业利益和个人隐私的重要环节。本文旨在分享关于网络安全漏洞的识别与防范、加密技术的应用以及提升安全意识的重要性。通过对这些方面的深入探讨,我们希望能为读者提供一些实用的建议和策略,以应对日益严峻的网络安全挑战。 【5月更文挑战第27天】 在软件开发周期中,自动化测试作为保障软件质量的关键步骤,其重要性日益凸显。本文旨在剖析自动化测试框架设计的核心原则,并结合具体案例探讨其在实际应用中的执行策略。通过对比分析不同测试框架的优缺点,我们提出一套高效、可扩展且易于维护的自动
|
4天前
|
Java 测试技术 API
《手把手教你》系列技巧篇(五十五)-java+ selenium自动化测试-上传文件-下篇(详细教程)
【5月更文挑战第19天】本文介绍了在Web自动化中处理文件上传的挑战,由于Selenium WebDriver不直接支持文件上传,因此需要借助外部工具。文章提到了两种主要的上传方式:基于input框的上传和非input控件的上传。对于非input控件的上传,推荐使用AutoIt,这是一个支持Windows GUI自动化的工具。
34 9
http://www.vxiaotou.com