Python的selenium包
Selenium 是一个广泛使用的自动化测试工具,它可以驱动浏览器执行各种操作,如打开网页、点击按钮、输入文本等。Selenium 支持多种编程语言,其中 Python 是常用的语言之一。
以下是详细介绍 Python Selenium 及其所有主要方法。
1. 安装 Selenium
首先,使用 pip
安装 Selenium:
此外,如果使用 Chrome 浏览器,需要安装 ChromeDriver(或其他浏览器驱动,例如 GeckoDriver for Firefox):
或者从 ChromeDriver 官方网站 下载适合你操作系统的版本。
2. 基本使用
2.1. 导入库和启动浏览器
from selenium import webdriver
# 初始化 WebDriver(以 Chrome 为例)
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')
# 打开一个网页
driver.get("https://www.example.com")
2.2. 基本浏览器操作方法
get(url)
: 打开指定的 URL。
current_url
: 获取当前页面的 URL。
title
: 获取当前页面的标题。
page_source
: 获取当前页面的 HTML 源代码。
close()
: 关闭当前窗口。
quit()
: 关闭所有窗口并结束 WebDriver 会话。
3. 元素定位与操作
Selenium 提供多种方式来查找和操作网页元素。
3.1. 定位元素的方法
find_element(By.ID, "id")
: 通过id
查找元素。
find_element(By.NAME, "name")
: 通过name
查找元素。
find_element(By.XPATH, "xpath")
: 通过XPath
查找元素。
find_element(By.CSS_SELECTOR, "css_selector")
: 通过 CSS 选择器查找元素。
find_element(By.CLASS_NAME, "class_name")
: 通过类名查找元素。
find_element(By.TAG_NAME, "tag_name")
: 通过标签名查找元素。
find_element(By.LINK_TEXT, "link_text")
: 通过链接文本查找元素。
find_element(By.PARTIAL_LINK_TEXT, "partial_link_text")
: 通过部分链接文本查找元素。
3.2. 操作元素的方法
click()
: 点击元素。
send_keys("text")
: 向元素输入文本。
clear()
: 清除文本框中的内容。
text
: 获取元素的文本。
get_attribute("attribute_name")
: 获取元素的属性值。
is_displayed()
: 检查元素是否显示在页面上。
is_enabled()
: 检查元素是否可用。
is_selected()
: 检查元素是否被选中(通常用于复选框和单选按钮)。
3.3. 处理多元素
find_elements(By.METHOD, "value")
: 返回匹配的所有元素列表。
elements = driver.find_elements(By.CLASS_NAME, "classname")
for element in elements:
print(element.text)
4. 处理浏览器窗口和框架
4.1. 处理多个窗口
window_handles
: 获取当前浏览器会话中的所有窗口句柄。
switch_to.window(handle)
: 切换到指定的窗口。
4.2. 处理框架(iframe)
switch_to.frame(frame_reference)
: 切换到指定的框架。
switch_to.default_content()
: 切换回主文档。
5. 处理弹出框和对话框
5.1. 警告框(Alert)
switch_to.alert
: 获取当前页面的弹出框。
alert.accept()
: 接受警告框。
alert.dismiss()
: 取消警告框。
alert.send_keys("text")
: 在警告框的输入框中输入文本。
alert.text
: 获取警告框的文本。
6. 处理下拉菜单
Select(driver.find_element(By.METHOD, "value"))
: 实例化一个 Select 对象。
from selenium.webdriver.support.ui import Select
select = Select(driver.find_element(By.ID, "dropdown"))
select.select_by_visible_text("text")
: 通过可见文本选择选项。
select.select_by_value("value")
: 通过值选择选项。
select.select_by_index(index)
: 通过索引选择选项。
7. 等待
7.1. 显式等待(Explicit Waits)
使用 WebDriverWait
等待某个条件成立(如元素可见)。
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "my_element"))
)
常见的条件有:
presence_of_element_located(locator)
: 元素加载到DOM中。visibility_of_element_located(locator)
: 元素可见。element_to_be_clickable(locator)
: 元素可点击。
7.2. 隐式等待(Implicit Waits)
设置隐式等待时间,在查找元素时,如果元素没有立即出现,WebDriver将等待一定时间再继续。
8. Cookies 管理
get_cookies()
: 获取所有 cookies。
get_cookie(name)
: 获取指定名称的 cookie。
add_cookie(cookie_dict)
: 添加一个 cookie。
delete_cookie(name)
: 删除指定名称的 cookie。
delete_all_cookies()
: 删除所有 cookies。
9. JavaScript 执行
execute_script(script, *args)
: 执行 JavaScript 脚本。
10. 文件上传
使用 send_keys
方法模拟文件上传:
11. 浏览器前进和后退
forward()
: 浏览器前进。
back()
: 浏览器后退。
12. 截屏
save_screenshot(file_path)
: 保存当前页面的截图。
get_screenshot_as_file(filename)
: 以文件形式获取截图。
13. 窗口管理
maximize_window()
: 最大化窗口。
minimize_window()
: 最小化窗口。
set_window_size(width, height)
: 设置窗口大小。
get_window_size()
: 获取窗口大小。
14. 关闭和退出
close()
: 关闭当前窗口。
quit()
: 关闭所有窗口并结束 WebDriver 会话。
通过掌握以上 Selenium 方法,您可以自动化大多数 Web 操作,并创建功能强大的自动化测试脚本。