WebDriver核心方法和屬性:掌握自動化測試的利器

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/210010.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/210010.shtml
英文地址,請注明出處:http://en.pswp.cn/news/210010.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用es256算法生成jwt

1、使用hutool來做 1、先去jwt解密/加密 - bejson在線工具弄個公私鑰 2、導入hutool maven <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.22</version></dependency><depe…

高項備考葵花寶典-項目進度管理輸入、輸出、工具和技術(中,很詳細考試必過)

項目進度管理的目標是使項目按時完成。有效的進度管理是項目管理成功的關鍵之一&#xff0c;進度問題在項目生命周期內引起的沖突最多。 小型項目中&#xff0c;定義活動、排列活動順序、估算活動持續時間及制定進度模型形成進度計劃等過程的聯系非常密切&#xff0c;可以視為一…

Pytorch中的resize和reshape

torch.reshape() 官方文檔的大致意思是&#xff1a; 返回與輸入具有相同數據和元素數量的張量&#xff0c;但是具有指定形狀。如果可能&#xff0c;返回的張量將是輸入的視圖&#xff0c;也就是說原本的tensor并沒有被改變&#xff0c;如果想要改變那么就將改變的tensor賦值給…

情深不必糾纏

那一年&#xff0c;男孩女孩在萬千人中相遇了。多年后女人的一封郵件&#xff0c;讓男人與女人的靈魂相遇了。他們無緣夫妻&#xff0c;卻發現彼此是靈魂的陪伴。不能攜手相守&#xff0c;卻懂得彼此的心靈。 有一天&#xff0c;女人告訴男人要回家了&#xff0c;問男人心里會不…

ejs —— 三目運算符的用法

EJS&#xff08;Embedded JavaScript&#xff09;是一種簡單的模板語言&#xff0c;它允許將JavaScript代碼嵌入到HTML中。在EJS中&#xff0c;<%、<%和<%-是用于將JavaScript代碼嵌入到模板中的語法。 <%&#xff1a;這是EJS的輸出表達式&#xff0c;用于將變量的…

阿里云安裝docker

文章目錄 一、 yum 進行安裝&#xff08;os版本 CentOS 7&#xff09; 推薦二、 apt-get 進行安裝(os版本 Ubuntu 14.04/16.04&#xff09;三、測試四、阿里云docker加速 一、 yum 進行安裝&#xff08;os版本 CentOS 7&#xff09; 推薦 # step 1: 安裝必要的一些系統工具 su…

<HarmonyOS第一課>應用服務上架【課后考核】

【習題】HarmonyOS應用/元服務上架 判斷題 元服務發布的國家與地區僅限于“中國大陸” 正確(True) 編譯打包的軟件包存放在項目目錄build > outputs > default下 正確(True) 單選題 創建應用時&#xff0c;應用包名需要和app.json5或者config.json文件中哪個字段保持…

VMware安裝Ubuntu20.04并使用Xshell連接虛擬機

文章目錄 虛擬機環境準備重置虛擬網絡適配器屬性&#xff08;可選&#xff09;配置NAT模式的靜態IP創建虛擬機虛擬機安裝配置 Xshell連接虛擬機 虛擬機環境準備 VMware WorkStation Pro 17.5&#xff1a;https://customerconnect.vmware.com/cn/downloads/details?downloadGr…

基于Java旅游信息管理系統

基于Java旅游信息管理系統 功能需求 1、旅游目的地管理&#xff1a;系統需要能夠記錄和管理各個旅游目的地的詳細信息&#xff0c;包括景點介紹、交通方式、住宿推薦等。管理員可以添加、編輯和刪除目的地信息。 2、旅游線路規劃&#xff1a;系統需要提供旅游線路規劃功能&a…

C++類名后面跟大括號和跟小括號的區別

在 C 中&#xff0c;類名后面跟著大括號 {} 和小括號 () 有不同的含義和作用。 大括號 {}&#xff1a; 初始化對象&#xff1a;當在聲明類對象時使用大括號 {} 時&#xff0c;這表示對對象進行初始化。這種方式也稱為列表初始化或者統一初始化。示例&#xff1a;MyClass obj{};…

網上下載的pdf文件,為什么不能復制文字?

不知道大家有沒有到過這種情況&#xff1f;在網上下載的PDF文件打開之后&#xff0c;發現選中文字之后無法復制。甚至其他功能也都無法使用&#xff0c;這是怎么回事&#xff1f;該怎么辦&#xff1f; 當我們發現文件打開之后&#xff0c;編輯功能無法使用&#xff0c;很可能是…

AlexNet

概念 過擬合:根本原因是特征維度過多&#xff0c;模型假設過于復雜&#xff0c;參數過多&#xff0c;訓練數據過少&#xff0c;噪聲過多&#xff0c;導致擬合的函數完美的預測訓練集&#xff0c;但對新數據的測試集預測結果差。 過度的擬合了訓練數據&#xff0c;而沒有考慮到…

29、卷積 - 參數 padding 的作用

在卷積過程中,Padding(填充)是一個關鍵的概念,它對于保留輸入信息和有效地處理邊緣信息至關重要。 1、Padding是什么? Padding 指的是在輸入圖像的周圍添加額外的像素值,用來以擴大輸入圖像的尺寸,這些額外填充的像素值通常設置為零,卷積操作在這個填充后的輸入圖像上…

C#基礎-結構體應用實例

目錄 定義 結構有以下特點 用法實例 定義 在 C# 中,結構體是值類型數據結構。它使得一個單一變量可以存儲各種數據類型的相關數據。struct 關鍵字用于創建結構體。 結構有以下特點 結構可帶有方法、字段、索引、屬性

2024年生成式人工智能發展預測

2024年生成式人工智能發展預測 2023.12.9版權聲明&#xff1a;本文為博主chszs的原創文章&#xff0c;未經博主允許不得轉載。 當前&#xff0c;生成式人工智能&#xff08;Generative AI&#xff0c;后面簡稱 Gen AI&#xff09;領域不但在持續演進&#xff0c;而且它正在徹…

ThinkPHP生活用品商城系統

有需要請加文章底部Q哦 可遠程調試 ThinkPHP生活用品商城系統 一 介紹 此生活用品商城系統基于ThinkPHP框架開發&#xff0c;數據庫mysql&#xff0c;前端bootstrap。系統分為用戶和管理員。(附帶配套設計文檔) 技術棧&#xff1a;ThinkPHPmysqlbootstrapphpstudyvscode 二 …

MYSQL主從復制配置指引

MYSQL主從復制配置指引 1.前期準備 部署完主備數據庫&#xff0c;初始化主備庫表結構和數據。 2. 主庫配置修改 修改主庫配置文件etc/my.cnf&#xff0c;新增以下配置&#xff1a; #服務器 id&#xff0c;需唯一 server-id 1 #二進制文件存放路徑 log-bin mysql-bin …

深入理解JavaScript的箭頭函數

深入理解JavaScript的箭頭函數 在ES6中&#xff0c;JavaScript引入了箭頭函數的概念&#xff0c;它提供了一種更簡潔的語法來定義匿名函數。雖然箭頭函數看起來很簡單&#xff0c;但它們在實際應用中有一些獨特的特性和行為。讓我們深入理解箭頭函數并學習如何正確地使用它們。…

記賬中心二開

系統預設了 這幾種 FSubSystem 為子系統 T_VC_SubSystem 卡片顯示的表 字段 FNeedRalteAccount 設置為1的話 &#xff0c;需要與總賬連用系統將去查找 系統狀態控制表。 如果系統狀態 沒有配置這個子系統 將無法顯示數據 select sysStaCtr.fid from T_BD_SystemStatusCt…

MySQL:drop、delete與truncate區別

一、用法不同 1、drop(丟棄數據): drop table 表名 &#xff0c;直接將表都刪除掉&#xff0c;在刪除表的時候使用。 2、truncate (清空數據) : truncate table 表名 &#xff0c;只刪除表中的數據&#xff0c;再插入數據的時候自增長 id 又從 1 開始&#xff0c;在清空表中數…