在自動化測試中,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的核心方法和屬性是進行自動化測試的基礎,可以幫助我們輕松地模擬用戶與瀏覽器的交互,執行各種操作。