Selenium自动化工具集 - 完整指南和使用教程

news/2024/11/30 12:40:13/

文章目录

  • Selenium 的概述:
  • Selenium 的安装与环境配置:
  • Selenium WebDriver 的基本概念:
  • 定位元素的方法:
  • 常用操作方法:
      • 获取所有的 cookie:
      • 获取指定名称的 cookie:
      • 添加 cookie:
      • 删除指定名称的 cookie:
      • 删除所有的 cookie:
      • 设置 cookie 的有效期:
  • Selenium常用的操作方法
  • 处理浏览器窗口和弹出框:
  • 处理表单和下拉列表:
  • 高级技巧与解决方案:
  • 浏览器操作和页面处理:
  • 完结

Selenium 的概述:

在这里插入图片描述

Selenium 是一个用于自动化浏览器操作的工具集。它通过模拟用户在浏览器中的行为,如点击、输入、表单提交等,来实现自动化测试和网页数据抓取等功能。Selenium 针对不同的浏览器提供了不同的 WebDriver 接口,如 ChromeDriver、GeckoDriver(Firefox)、WebDriver(Safari)等。

Selenium 的安装与环境配置:

在这里插入图片描述

以下是基本的安装和环境配置步骤:

  • 安装 Python 和 pip:确保已经安装了 Python,并使用以下命令验证安装是否成功:
python --version
  • 安装 Selenium:使用 pip 命令安装 Selenium,运行以下命令:
pip install selenium
  • 下载浏览器驱动程序:根据你所使用的浏览器类型和版本,下载相应的浏览器驱动程序。常见的浏览器驱动程序有 ChromeDriver、GeckoDriver(Firefox)、WebDriver(Safari)等。
  • 将驱动程序添加到环境变量:将下载的驱动程序所在的路径添加到系统的环境变量中,这样 Selenium 才能找到并使用该驱动程序。

Selenium WebDriver 的基本概念:

在这里插入图片描述

Selenium WebDriver 是 Selenium 的核心组件,它提供了一系列 API 接口,用于与浏览器进行交互。在使用 WebDriver 之前,需要实例化一个 WebDriver 对象,并指定要使用的浏览器和驱动程序。以下是示例代码:

from selenium import webdriver# Chrome 浏览器示例
driver = webdriver.Chrome("path/to/chromedriver.exe")# Firefox 浏览器示例
driver = webdriver.Firefox("path/to/geckodriver.exe")

定位元素的方法:

在这里插入图片描述

Selenium 提供多种方式来定位页面上的元素。常见的定位方法包括:

  • 通过 ID 定位元素:
element = driver.find_element_by_id("element_id")
  • 通过 XPath 定位元素:
element = driver.find_element_by_xpath("//tag[@attribute='value']")
  • 通过 CSS 选择器定位元素:
element = driver.find_element_by_css_selector("tag[attribute='value']")
  • 通过链接文本定位元素:
element = driver.find_element_by_link_text("link_text")
  • 通过部分链接文本定位元素:
element = driver.find_element_by_partial_link_text("partial_link_text")
  • 通过标签名定位元素:
element = driver.find_element_by_tag_name("tag_name")
  • 通过类名定位元素:
element = driver.find_element_by_class_name("class_name")
  • 通过名称定位元素:
element = driver.find_element_by_name("name")

常用操作方法:

在这里插入图片描述

获取所有的 cookie:

cookies = driver.get_cookies()

该方法返回一个列表,包含当前页面的所有 cookie。每个 cookie 都以字典的形式表示,包括名称、值、域名、路径等信息。

获取指定名称的 cookie:

cookie = driver.get_cookie("cookie_name")

使用该方法可以获取指定名称的 cookie。返回的结果是一个字典,包含 cookie 的各个属性。

添加 cookie:

cookie = {"name": "cookie_name", "value": "cookie_value"}
driver.add_cookie(cookie)

使用该方法可以添加一个新的 cookie。需要提供一个包含 cookie 名称和值的字典对象。

删除指定名称的 cookie:

driver.delete_cookie("cookie_name")

该方法用于删除指定名称的 cookie。

删除所有的 cookie:

driver.delete_all_cookies()

使用该方法可以删除当前页面的所有 cookie。

设置 cookie 的有效期:

driver.add_cookie({"name": "cookie_name", "value": "cookie_value", "expires": "expiry_date"})

可以通过给 cookie 字典对象添加 "expires" 属性,并指定有效期来设置 cookie 的过期时间。"expiry_date" 的格式可以是时间戳或日期字符串。

Selenium常用的操作方法

  • 输入文本:
element.send_keys("text")
  • 单击元素:
element.click()
  • 获取元素属性:
attribute_value = element.get_attribute("attribute")
  • 页面导航:
# 打开指定 URL
driver.get("https://www.example.com")# 返回上一个页面
driver.back()# 前进到下一个页面
driver.forward()

处理浏览器窗口和弹出框:

在 Selenium 中,可以使用以下方法处理浏览器窗口切换和处理弹出框:

  • 窗口切换:
# 切换到指定窗口
driver.switch_to.window("window_handle")
  • 弹出框处理:
# 切换到弹出框
alert = driver.switch_to.alert# 接受弹出框
alert.accept()# 关闭弹出框
alert.dismiss()

处理表单和下拉列表:

Selenium 提供了相应的方法来处理表单字段和下拉列表:

  • 输入文本到表单字段:
element.send_keys("text")
  • 选择下拉列表选项:
from selenium.webdriver.support.ui import Selectselect = Select(driver.find_element_by_id("select_id"))# 通过可见文本选择选项
select.select_by_visible_text("option_text")# 通过值选择选项
select.select_by_value("option_value")

高级技巧与解决方案:

  • 等待页面加载:使用显示等待或隐式等待来等待页面加载完成。以下是示例代码:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC# 显示等待,等待元素可见
element = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, "element_id"))
)# 隐式等待,全局等待
driver.implicitly_wait(10)
  • 处理多窗口切换:使用 window_handles 属性获取所有窗口句柄,并使用 switch_to.window() 方法切换窗口。以下是示例代码:
# 获取当前窗口句柄
current_handle = driver.current_window_handle# 获取所有窗口句柄
all_handles = driver.window_handles# 切换到新窗口
for handle in all_handles:if handle != current_handle:driver.switch_to.window(handle)break
  • 处理文件上传和下载:使用 send_keys() 方法指定文件路径来上传文件,或使用浏览器设置来配置文件下载。以下是示例代码:
# 文件上传
driver.find_element_by_id("file_input").send_keys("path/to/file")# 文件下载
# 可以将浏览器的下载目录设置为指定路径
  • 处理页面滚动:使用 JavaScript 执行滚动操作。以下是示例代码:
# 滚动到页面底部
driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")

浏览器操作和页面处理:

  • 最大化浏览器窗口:
driver.maximize_window()

这个方法用于将浏览器窗口最大化,以便更好地查看网页内容。

  • 截取屏幕截图:
driver.save_screenshot("path/to/screenshot.png")

使用这个方法可以将整个浏览器窗口的屏幕截图保存为指定路径的图像文件。

  • 刷新页面:
driver.refresh()

该方法用于刷新当前页面,相当于点击浏览器的刷新按钮。

  • 获取当前页面的标题:
title = driver.title

使用该方法可以获取当前页面的标题,并将其存储在变量 title 中。

  • 获取当前页面的 URL:
url = driver.current_url

这个方法返回当前页面的 URL,并将其存储在变量 url 中。

  • 在文本框中清除文本:
text_field.clear()

该方法用于清除文本框中的文本内容,适用于 <input><textarea> 元素。

  • 获取元素的文本内容:
text = element.text

使用该方法可以获取特定元素的文本内容,并将其存储在变量 text 中。这对于提取网页上的文本信息非常有用。

  • 获取元素的 CSS 属性:
css_property = element.value_of_css_property("property")

这个方法允许你获取特定元素的 CSS 属性值。你需要将 "property" 替换为要获取的具体属性名称,比如 "color""font-size" 等。获取到的属性值将存储在变量 css_property 中。

完结

在这里插入图片描述


http://www.ppmy.cn/news/535859.html

相关文章

重磅:2020年度获国家科学技术奖励提名的材料项目汇总

来源&#xff1a; http://www.nosta.gov.cn/upload/2020slxmgb/showProject.html 转自&#xff1a;材料人 2020年3月24日&#xff0c;科学技术部发布了《国家科学技术奖励工作办公室公告第95号》文件。这份文件对2020年国家自然科学奖、国家技术发明奖通用项目、国家科学技术进…

软件项目管理 第七章 软件项目的质量管理与配置管理 课后习题参考答案——主编:李冰、张桥珍、刘玉娥

第七章 软件项目的质量管理与配置管理 课后习题参考答案 1.选择题 (1)项目质量管理的最终责任由谁来承担?&#xff08;D&#xff09; A.项目开发人员 B.采购经理 C.质量经理 D.项目经理 (2)“质量成本”是一个项目管理概念,它说明了下列哪项成本?…

携手内马尔发布智能新品,TCL加快全球化步伐

作为一家有着国际化视野和全球化布局的中国知名品牌&#xff0c;TCL在国际市场攻城拔寨的步伐&#xff0c;近年来正在不断提速。 当地时间2018年4月17日&#xff0c;内马尔的故乡、足球王国巴西&#xff0c;TCL&内马尔全球发布会拉开大幕。 发布会上&#xff0c;TCL为内马尔…

setattr、getattr和hasattr的作用和用法

setattr、getattr和hasattr的作用和用法 1. setattr setattr() 是 Python 内置函数之一&#xff0c;用于设置对象的属性或方法。setattr() 接受三个参数&#xff1a;第一个参数是对象&#xff0c;第二个参数是字符串形式的属性名或方法名&#xff0c;第三个参数是要设置的属性…

Qt Model-View架构领悟

1.架构的选择 1.1是否需要委托 模型视图架构图如下所示&#xff0c;模型视图架构源于MVC模式&#xff1a;模型&#xff08;Model&#xff09;是应用对象&#xff0c;表示数据&#xff1b;视图&#xff08;View&#xff09;是模型的用户界面&#xff0c;用以显示数据&#xff…

RocketMQ常用操作

RocketMQ历史及发展 如果想要了解RocketMQ的历史&#xff0c;则需了解阿里巴巴中间件团队中的历史 2011年&#xff0c;Linkin(领英&#xff1a;全球知名的职场社交平台)推出Kafka消息引擎&#xff0c;阿里巴巴中间件团队在研究了Kafka的整体机制和架构设计之后&#xff0c;基…

互联网大厂持续裁员,疫情彻底放开,2023年你敢主动跳槽吗?

随着第一批阳过之后&#xff0c;上班的人增多了&#xff0c;地铁站人基本恢复了往常的人流&#xff0c;商场的人也增加了&#xff0c;生活逐步要恢复正常了。不过就是年底了还听到一些大厂裁员的消息&#xff0c;也许企业经营效益的恢复还需要一定的时间。经济靠出口、投资、消…

成都富士康车间爆炸对iPad市场的冲击

5月20日晚&#xff0c;富士康集团鸿富锦成都公司抛光车间在生产中发生爆炸事故&#xff0c;目前已造成3人死亡&#xff0c;16人受伤&#xff0c;其中重伤2人。事故原因初步认定为抛光车间收尘风管可燃粉尘意外爆炸引发。  目前&#xff0c;成都公司事故车间及与其制造流程相同…