如何使用selenium做自動化?

Selenium工作原理

Selenium2.0用到webdriver,the webdriver wireless protocol,以HTTP為基礎(chǔ)的協(xié)議,通過post方法與server通信操作瀏覽器。


Selenium工作原理

Webdriver驅(qū)動原理:Webdriver會將對應(yīng)的瀏覽器綁定在特定端口啟動,并作為一個服務(wù)器監(jiān)聽來自于測試腳本的命令,selenium測試腳本通過調(diào)用該服務(wù)操作本機(jī)安裝的相應(yīng)的瀏覽器。

webdriver可以理解成為一個服務(wù)端或者是一個橋梁,用于建立起腳本和瀏覽器之間的聯(lián)系,webdriver本身是基于瀏覽器內(nèi)核來開發(fā)的,所以,webdriver和瀏覽器有著強(qiáng)配套關(guān)系。

Selenium環(huán)境搭建

引入Selenium Jar
可以通過使用maven管理或者非maven項目直接引入jar包
Maven管理:
從maven倉庫https://mvnrepository.com/中搜索selenium,將dependency依賴添加到pom文件中即可。

配置webdriver驅(qū)動器
目前市面主流的瀏覽器都針對selenium開發(fā)了對應(yīng)的webdriver驅(qū)動器,因而需要下載和瀏覽器版本對應(yīng)的webdriver.exe文件。
chromedriver依然推薦在淘寶鏡像下載。http://npm.taobao.org/mirrors/chromedriver/

設(shè)置瀏覽器啟動路徑
要進(jìn)行自動化測試,我們需要調(diào)用不同瀏覽器以及對應(yīng)的webdriver驅(qū)動器進(jìn)行操作,因此需要向腳本指定瀏覽器和webdriver的啟動路徑。

Chrome瀏覽器和IE瀏覽器通常會自動安裝在默認(rèn)位置,不需要指定瀏覽器啟動路徑。
Firefox瀏覽器通過
System.setProperty(“webdriver.firefox.bin”, “火狐安裝路徑”);進(jìn)行指定

設(shè)置webdriver啟動路徑
Webdriver啟動路徑可以通過指定絕對路徑的方式指定,也可以將webdriver.exe拷貝到項目路徑中,通過相對路徑指定,建議使用相對路徑,方便后期打包。

通過System.setProperty(“webdriver.gecko.driver”, “火狐driver路徑”);指定火狐瀏覽器的geckodriver路徑。
Chrome瀏覽器和IE瀏覽器的屬性鍵名分別為webdriver.chrome.driver和webdriver.ie.driver

注意:driver.close()方法和driver.quit()方法的區(qū)別,記得調(diào)用quit關(guān)閉driver進(jìn)程。
driver.quit()方法,關(guān)閉瀏覽器并且關(guān)閉driver.exe進(jìn)程。
driver.close()方法,只是關(guān)閉掉當(dāng)前的頁面窗口。不關(guān)閉driver.exe。

在自動化測試啟動webdriver瀏覽器時,默認(rèn)是不帶任何用戶配置的,不會有cookie和相關(guān)設(shè)置,那么可以通過參數(shù)配置指定,加上用戶文件,或者其它的一些設(shè)置。

chromedriver的用戶文件加載時,最好是復(fù)制一份到其它位置調(diào)用,否則,需要關(guān)閉手動打開的瀏覽器,要不然會產(chǎn)生沖突,導(dǎo)致報錯。

代碼示例

public class UITest {

    public static void main(String[] args) throws InterruptedException {
        // 選擇不同的瀏覽器打開百度搜索內(nèi)容
        baiduSearch(openBrowser("chrome"));
        baiduSearch(openBrowser("firefox"));
        baiduSearch(openBrowser("ie"));

    }

    static void baiduSearch(WebDriver driver) throws InterruptedException {
        driver.get("https://www.baidu.com");
        // 使用css選擇器用id定位文本框并輸入馬云
        driver.findElement(By.cssSelector("#kw")).sendKeys("馬云");
        // 使用id定位搜索按鈕并點(diǎn)擊
        driver.findElement(By.id("su")).click();
        Thread.sleep(1500);
        // 獲取搜索后的title并輸出
        System.out.println(driver.getTitle());
        driver.quit();
    }

    static WebDriver openBrowser(String browser) {
        switch (browser) {
            case "chrome":
                System.setProperty("webdriver.chrome.driver", "UI\\webdriver\\chromedriver.exe");
                return new ChromeDriver();
            case "firefox":
                System.setProperty("webdriver.gecko.driver", "UI\\webdriver\\geckodriver.exe");
                return new FirefoxDriver();
            case "ie":
                System.setProperty("webdriver.ie.driver", "UI\\webdriver\\IEDriverServer.exe");
                return new InternetExplorerDriver();
            default:
                System.setProperty("webdriver.chrome.driver", "UI\\webdriver\\chromedriver.exe");
                return new ChromeDriver();
        }
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容