自动化工具 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 也有一些缺点,例如速度较慢、需要占用较多的系统资源等,使用时需要注意。


相关文章
|
1月前
|
Java 测试技术 数据安全/隐私保护
软件测试中的自动化策略与工具应用
在软件开发的快速迭代中,自动化测试以其高效、稳定的特点成为了质量保证的重要手段。本文将深入探讨自动化测试的核心概念、常见工具的应用,以及如何设计有效的自动化测试策略,旨在为读者提供一套完整的自动化测试解决方案,帮助团队提升测试效率和软件质量。
|
2月前
|
数据采集 测试技术 Python
自动化淘宝秒杀:使用Selenium WebDriver的实战指南
本文详细介绍了如何利用Selenium WebDriver自动化淘宝秒杀操作,包括环境配置、代码实现及注意事项,旨在帮助读者提升秒杀成功率,同时提醒合理使用以遵守平台规则。
110 8
|
15天前
|
Web App开发 数据采集 JavaScript
CDP与Selenium相结合——玩转网页端自动化数据采集/爬取程序
本文介绍了Selenium、Chrome DevTools及Chrome DevTools Protocol (CDP) 的基本功能与应用。Selenium是一款开源自动化测试工具,适用于网页端应用程序测试和数据采集,具备跨平台特性。Chrome DevTools内置浏览器中,提供调试、分析Web应用程序的功能,包括元素、控制台、源代码和网络选项卡等。CDP是一套用于与Chromium内核浏览器通信的API,支持自动化测试和性能分析。文中还展示了Selenium与CDP结合使用的示例,如捕获网络请求数据和打印网页内容,并推荐了相关书籍和资源以供深入学习。
123 39
CDP与Selenium相结合——玩转网页端自动化数据采集/爬取程序
|
24天前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
76 19
Selenium IDE:Web自动化测试的得力助手
|
26天前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
148 17
Selenium:强大的 Web 自动化测试工具
|
1月前
|
运维 Kubernetes Devops
自动化运维:从脚本到工具的演进之旅
在数字化浪潮中,自动化运维成为提升效率、保障系统稳定的关键。本文将探索自动化运维的发展脉络,从基础的Shell脚本编写到复杂的自动化工具应用,揭示这一技术变革如何重塑IT运维领域。我们将通过实际案例,展示自动化运维在简化工作流程、提高响应速度和降低人为错误中的重要作用。无论你是初学者还是资深专家,这篇文章都将为你提供宝贵的洞见和实用的技巧。
|
2月前
|
机器学习/深度学习 人工智能 运维
自动化运维之路:从脚本到工具的演进
在IT运维领域,效率和准确性是衡量工作成效的关键指标。随着技术的发展,自动化运维逐渐成为提升这两个指标的重要手段。本文将带领读者了解自动化运维的演变历程,从最初的简单脚本编写到现今复杂的自动化工具应用,展示如何通过技术提升运维效率。文章不仅介绍理论和实践案例,还提供了代码示例,帮助读者理解自动化运维的实际应用场景。
|
2月前
|
JavaScript 前端开发 开发者
探索 DrissionPage: 强大的Python网页自动化工具
DrissionPage 是一个基于 Python 的网页自动化工具,结合了浏览器自动化的便利性和 requests 库的高效率。它提供三种页面对象:ChromiumPage、WebPage 和 SessionPage,分别适用于不同的使用场景,帮助开发者高效完成网页自动化任务。
200 4
|
2月前
|
安全 前端开发 测试技术
如何选择合适的自动化安全测试工具
选择合适的自动化安全测试工具需考虑多个因素,包括项目需求、测试目标、系统类型和技术栈,工具的功能特性、市场评价、成本和许可,以及集成性、误报率、社区支持、易用性和安全性。综合评估这些因素,可确保所选工具满足项目需求和团队能力。
|
2月前
|
运维 Ubuntu 应用服务中间件
自动化运维工具Ansible的实战应用
【10月更文挑战第36天】在现代IT基础设施管理中,自动化运维已成为提升效率、减少人为错误的关键手段。本文通过介绍Ansible这一流行的自动化工具,旨在揭示其在简化日常运维任务中的实际应用价值。文章将围绕Ansible的核心概念、安装配置以及具体使用案例展开,帮助读者构建起自动化运维的初步认识,并激发对更深入内容的学习兴趣。
74 4

热门文章

最新文章