在自动化测试中,Selenium WebDriver是一个非常重要的工具。它提供了一种方式来模拟用户与浏览器的交互,从而进行各种操作,如点击按钮、输入文本等。本文将介绍WebDriver的核心方法和属性,以及如何使用它们。
1. 启动和关闭浏览器
在使用WebDriver之前,我们需要先启动一个浏览器。这可以通过调用WebDriver的get方法来实现。例如,如果我们想要启动Chrome浏览器,我们可以这样做:
from selenium import webdriverdriver = webdriver.Chrome()
当我们完成所有的操作后,我们需要关闭浏览器。这可以通过调用WebDriver的quit方法来实现:
driver.quit()
2. 导航到网页
使用WebDriver,我们可以很容易地导航到任何一个网页。这可以通过调用WebDriver的get方法来实现。例如,如果我们想要导航到Google的主页,我们可以这样做:
driver.get("https://www.baidu.com/")
3. 查找元素
在网页上,我们经常需要查找特定的元素,如按钮、链接等。这可以通过调用WebDriver的各种查找方法来实现。例如,我们可以使用find_element_by_id方法来查找具有特定ID的元素:
selenium3之前的版本:
element = driver.find_element_by_id("my-button")
我们还可以使用find_element_by_name、find_element_by_class_name、find_element_by_tag_name、find_element_by_link_text等方法来查找元素。
selenium4版本
ID——driver.find_element(By.ID,'value')
xpath——driver.find_element(By.xpath,'value')
css selector——driver.find_element(By.CSS_SELECTOR,'value')
class name——driver.find_element(By.CLASS_NAME,'value')
name——driver.find_element(By.NAME,'value')
link text——driver.find_element(By.LINK_TEXT,'value')
partial link text——driver.find_element(By.PARTIAL_LINK_TEXT,'value')
tag name——driver.find_element(By.TAG_NAME,'value')
unicode——driver.find_element(By.UNICODE,'value')
4. 操作元素
找到元素后,我们可以对其进行各种操作,如点击、输入文本等。这可以通过调用WebElement的方法来实现。例如,我们可以使用click方法来点击一个按钮:
element.click()
我们还可以使用send_keys方法来输入文本:
element.send_keys("Hello, World!")
5. 获取元素的文本和属性
有时候,我们需要获取元素的文本或属性。这可以通过调用WebElement的方法来实现。例如,我们可以使用get_attribute方法来获取元素的属性:
attribute = element.get_attribute("href")
我们还可以使用text属性来获取元素的文本:
text = element.text
6. 处理弹出窗口和警告框
在网页上,我们经常会遇到弹出窗口和警告框。这可以通过调用WebDriver的switch_to方法来处理。例如,我们可以使用switch_to.alert方法来处理警告框:
alert = driver.switch_to.alert
alert.accept() # 接受警告框
alert.dismiss() # 取消警告框
我们还可以使用switch_to.window方法来处理弹出窗口:
for handle in driver.window_handles: # 切换到新的窗口句柄(即新的窗口)driver.switch_to.window(handle) # 切换到新的窗口句柄(即新的窗口)# 在新窗口中执行操作...
7. 处理下拉列表和复选框等控件
在网页上,我们经常会遇到下拉列表、复选框等控件。这可以通过调用WebElement的方法来处理。例如,我们可以使用select_by_visible_text方法来选择下拉列表中的选项:
element.select_by_visible_text("Option 1") # 选择“Option 1”选项
我们还可以使用is_selected方法来检查复选框是否被选中:
if element.is_selected(): # 如果复选框被选中...else...如果复选框未被选中...
8. 处理文件上传和下载操作
在网页上,我们经常需要进行文件上传和下载操作。这可以通过调用WebElement的方法来处理。例如,我们可以使用send_keys方法来上传文件:
element.send_keys("/path/to/file") # 上传文件“/path/to/file”到输入框中...
整体示例:
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import Byclass TestCase(object):def __init__(self):self.driver = webdriver.Chrome() # 创建一个Chrome浏览器实例self.driver.get("https://www.baidu.com/") # 打开百度首页self.driver.maximize_window() # 窗口最大化sleep(1) # 等待1秒def test_prop(self):'''常见属性:return:'''print(self.driver.name) # 打印浏览器名称print(self.driver.current_url) # 打印当前URLprint(self.driver.title) # 打印当前页面标题print(self.driver.window_handles) # 打印当前窗口所有句柄print(self.driver.page_source) # 打印当前页面源码self.driver.find_element(by=By.ID, value="su").click() # 点击搜索按钮self.driver.quite() # 关闭浏览器def test_method(self):'''常见方法:return:'''self.driver.find_element(by=By.ID, value="kw").send_keys("selenium") # 在搜索框中输入文本self.driver.find_element(by=By.ID, value="su").click() # 点击搜索按钮sleep(3) # 等待3秒self.driver.back() # 返回上一页sleep(3) # 等待3秒self.driver.refresh() # 刷新页面sleep(3) # 等待3秒self.driver.forward() # 前进到下一个页面self.driver.close() # 只关闭当前tabself.driver.quite() # 关闭浏览器
总结:掌握WebDriver的核心方法和属性是进行自动化测试的基础,可以帮助我们轻松地模拟用户与浏览器的交互,执行各种操作。