[跟著官方文檔學Selenium][學習筆記][三][WebDriver入門指南]
WebDriver以本地化方式驅動瀏覽器,就像用戶在本地或使用Selenium服務器的遠程機器上所做的那樣,這標志著瀏覽器自動化的飛躍。
Selenium WebDriver指的是語言綁定和各個瀏覽器控制代碼的實現。通常稱為WebDriver。
Selenium WebDriver是W3C推薦標準
WebDriver被設計成一個簡單和簡潔的編程接口
WebDriver是一個簡潔的面向對象API
它能有效驅動瀏覽器
Selenium通過使用WebDriver支持市場上所有主流瀏覽器的自動化。WebDriver是一個API和協議,它定義了一個語言中立的接口,用于控制Web瀏覽器的行為。每個瀏覽器都有一個特定的WebDriver實現,稱為驅動程序。驅動程序是負責委派給瀏覽器的組件,并處理與Selenium和瀏覽器之間的通信。
這種分離是有意識地努力讓瀏覽器供應商為其瀏覽器的實現負責的一部分。Selenium在可能的情況下使用這些第三方驅動程序,但在這些驅動程序不存在的時候,也提供了由項目自己維護的驅動程序。
Selenium框架通過一個面向用戶的界面將所有這些部分連接在一起,該界面允許透明地使用不同的瀏覽器后端,從而實現跨瀏覽器和跨平臺自動化。
Selenium設置與其他商業工具的設置完全不同。要在自動化項目中使用Selenium,需要為每種語言安裝語言綁定庫。此外,對于要自動運行并運行測試的瀏覽器,需要WebDriver的執行文件。
安裝Selenium分為三個步驟:
為你選擇的編程語言安裝Selenium類庫
配置瀏覽器驅動以驅動你的瀏覽器(如msedgedriver用于Edge瀏覽器)
(可選)設置和配置Selenium Grid用于拓展測試
安裝類庫
首先,為自動化項目安裝Selenium綁定庫。
這里以Java為例,新建Maven項目,在pom.xml中添加selenium-java依賴項
selenium-java依賴項支持在所有Selenium支持的瀏覽器中運行自動化項目。如果只想在特定的瀏覽器中進行測試,可以在pom.xml文件中添加該瀏覽器的依賴項。例如,只想在Edge上運行測試,可以添加以下依賴項:
安裝驅動
通過WebDriver,Selenium支持市場上所有主流瀏覽器(Chrome、Firefox、Internet Explorer、Edge、Opera和Safari),WebDriver盡量使用瀏覽器內置的自動化支持 來驅動瀏覽器。
由于除IE瀏覽器之外的所有驅動程序實現都是由瀏覽器供應商自己提供的,因此標準Selenium發行版不包括驅動程序
快速參考
使用驅動的三種方式
驅動管理軟件
大多數機器都會自動更新瀏覽器,但驅動程序不會。為了確保為瀏覽器提供正確的驅動程序,這里以Java語言為例
//導入WebDriver Manager import io.github.bonigarcia.wdm.WebDriverManager; //調用setup()方法來設置正確的瀏覽器驅動 WebDriverManager.edgedriver().setup(); //初始化驅動 WebDriver driver = new EdgeDriver();
PATH環境變量
此選項首先需要手動下載驅動程序,是一個靈活的選項,可以在不更新代碼的情況下更改驅動程序的位置,并且可以在多臺機器上工作,而不需要每臺機器將驅動程序放在同一位置。
可以將驅動程序放置在路徑中已列出的目錄中,也可以將其放置在目錄中并將其添加到PATH中
//要查看PATH上有哪些目錄,打開命令提示符輸入 echo %PATH% //如果還沒有進入PATH路徑中,可以輸入如下指令添加到PATH中 setx PATH "%PATH%;C:\WebDriver\bin" //可以在命令行輸入WebDriver名字驗證是否成功添加PATH chromedriver.exe //如果PATH配置正確,將看到一些與驅動程序啟動相關的輸出 Starting MSEdgeDriver 99.0.1150.36 (c438621746b2932668109129d137a7e3a22ef4fd) on port 9515 Only local connections are allowed. Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping MSEdgeDriver safe. MSEdgeDriver was started successfully.
硬編碼位置
需要手動下載驅動程序,跟方式2類似。在代碼中指定位置本身的優點是不需要指出系統上的環境變量,但缺點是使代碼的靈活性大大降低。
System.setProperty("webdriver.chrome.driver","/path/to/chromedriver"); ChromeDriver driver = new ChromeDriver();
打開瀏覽器
當完成了Selenium類庫安裝和驅動配置后,現在就可以使用瀏覽器啟動和停止會話。
通常,瀏覽器都是根據特定的選項啟動,這些選項描述瀏覽器必須支持哪些功能,以及瀏覽器在會話期間應該如何運行。有些功能是所有瀏覽器共享,有些功能特定于所使用的瀏覽器。這里以Edge瀏覽器為實例。微軟Edge瀏覽器使用Chromium實現的,msedgedriver的主要版本號必須與Edge瀏覽器的主要版本匹配。
import org.openqa.selenium.WebDriver; import org.openqa.selenium.edge.EdgeDriver; import org.openqa.selenium.edge.EdgeOptions; public class OpenBrowser { public static void main(String[] args) { WebDriver webDriver; EdgeOptions options = new EdgeOptions(); webDriver = new EdgeDriver(options); webDriver.quit(); System.out.println("成功打開并退出了Edge瀏覽器"); } }
第一個腳本
當能夠運用Selenium啟動關閉瀏覽器時就可以編寫第一個Selenium腳本
Selenium的8個基本組件
Selenium所做的一切,就是給瀏覽器發送指令,用以執行某些操作或為信息發送請求。
是用驅動實例開啟會話
WebDriver webDriver = new EdgeDriver();
在瀏覽器執行操作(打開一個網頁)
webDriver.get("https://www.baidu.com");
請求瀏覽器信息(獲取標簽名稱)
webDriver.getTitle();//百度一下,你就知道
等待時間(設置瀏覽器延時)
webDriver.manage().timeouts().implicitlyWait(Duration.ofSeconds(4));
發送指令查找元素
WebElement searchButton = webDriver.findElement(By.id("su")); WebElement searchBox = webDriver.findElement(By.name("wd"));
操作元素
searchBox.sendKeys("Selenium"); searchButton.click();
獲取元素信息
searchBox = webDriver.findElement(By.name("wd")); String searchValue = searchBox.getAttribute("value"); System.out.println(searchValue);//Selenium
結束會話
webDriver.quit();
完整例子:
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.edge.EdgeDriver; import java.time.Duration; public class FirstScript { public static void main(String[] args) { WebDriver webDriver = new EdgeDriver(); webDriver.get("https://www.baidu.com/"); String title = webDriver.getTitle(); System.out.println(title); webDriver.manage().timeouts().implicitlyWait(Duration.ofSeconds(4)); WebElement searchButton = webDriver.findElement(By.id("su")); WebElement searchBox = webDriver.findElement(By.name("wd")); searchBox.sendKeys("Selenium"); searchButton.click(); searchBox = webDriver.findElement(By.name("wd")); String searchValue = searchBox.getAttribute("value"); System.out.println(searchValue);//Selenium webDriver.quit(); } }
Java Selenium
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。