UI「三重天」之Selenium(一)

關注一下UI自動化,記一記筆記。html

UI自動化的優缺點:

  關於UI自動化的優缺點想來你們都有了解,優勢:解放人力(並非徹底解放),用機器(涵蓋工具、腳本等)代替人工完成測試工做,將測試用例轉化爲腳本實現,其大部分的使用階段在迴歸測試階段。缺點:難維護,依賴於前端。前端

  web端混的風生水起的非Selenium莫屬,app端的Uiautomator、appium等等。java

UI自動化的核心:

  UI自動化的核心仍是定位元素。git

Web端「一哥」--Selenium:

瞭解一項技術,最權威的依然是官方文檔,貼傳送門:https://www.seleniumhq.org/docsgithub

Selenium工做原理:web

  當下用的最多的仍是webdriver,那麼webdriver是什麼東西呢?用來幹什麼?在web端的UI自動化過程當中充當了什麼角色?chrome

  webdriver是C/S架構的一套工具,client是編寫的自動化腳本代碼,server就是由webdriver.exe啓動的瀏覽器,監聽來自client發送的消息,而且對其作出響應,從而實現對瀏覽npm

器的操做。api

  通俗一點webdriver就是快遞公司,代碼是快遞信息,快遞員是瀏覽器。瀏覽器

  寄快遞的時候首先要明白的是要經過哪家快遞公司去承運(瀏覽器應該用chrome仍是firefox、IE),選好快遞公司以後確定要寫清楚收件人的姓名、地址、電話號碼(執行代碼中要明確請求URL、觸發時間、按鈕、輸入文本等),快遞公司會將這些信息傳達給快遞員,快遞員進行送件;其工做機制可能有些許差異,可是理解容易點,大部分都是殊途同歸。

有關webdriver和瀏覽器的不適配問題碰到不止一次有人問,下方貼了chrome和firefox的所有信息,都是百度來的,當個苦力綜合一下:

chrome瀏覽器歷史版本下載地址:https://www.chromium.org/getting-involved/dev-channel(國外版)

               https://www.chromedownloads.net/(國內版)

               http://npm.taobao.org/mirrors/chromedriver/

Firefox瀏覽器歷史版本下載地址:http://ftp.mozilla.org/pub/firefox/releases/

chrome驅動下載地址:http://chromedriver.storage.googleapis.com/index.html

Firefox驅動下載地址:https://github.com/mozilla/geckodriver/releases

 

chrome驅動與瀏覽器對應表:

        chromedriver版本 支持的Chrome版本
v2.34 v61-63
v2.33 v60-62
v2.32 v59-61
v2.31 v58-60
v2.30 v58-60
v2.29 v56-58
v2.28 v55-57
v2.27 v54-56
v2.26 v53-55
v2.25 v53-55
v2.24 v52-54
v2.23 v51-53
v2.22 v49-52
v2.21 v46-50
v2.20 v43-48
v2.19 v43-47
v2.18 v43-46
v2.17 v42-43
v2.13 v42-45
v2.15 v40-43
v2.14 v39-42
v2.13 v38-41
v2.12 v36-40
v2.11 v36-40
v2.10 v33-36
v2.9 v31-34
v2.8 v30-33
v2.7 v30-33
v2.6 v29-32
v2.5 v29-32
v2.4 v29-32

以Selenium官方示例代碼爲例:

         // And now use this to visit Google
        driver.get("https://www.baidu.com");
        // Alternatively the same thing can be done like this
        // driver.navigate().to("http://www.google.com");

        // Find the text input element by its name
        WebElement element = driver.findElement(By.name("wd"));

        // Enter something to search for
        element.sendKeys("桃李不言、下自成蹊 博客園");

        // Now submit the form. WebDriver will find the form for us from the element
        element.submit();

        // Check the title of the page
        System.out.println("Page title is: " + driver.getTitle());
        
        // Google's search is rendered dynamically with JavaScript.
        // Wait for the page to load, timeout after 10 seconds
        (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
            public Boolean apply(WebDriver d) {
                return d.getTitle().toLowerCase().startsWith("cheese!");
            }
        });

        // Should see: "cheese! - Google Search"
        System.out.println("Page title is: " + driver.getTitle());
        
        //Close the browser
        driver.quit();   
註釋寫的很明白咯!!,就不一一翻譯了。

 原文代碼是訪問google,改爲了baidu,搜索內容以及By.name段更改了value。

 Firefox瀏覽器運行方式:

  一、增長瀏覽器安裝路徑

  二、增長驅動路徑 

System.setProperty("webdriver.firefox.bin", "F:\\Firefox\\firefox.exe");
    	System.setProperty("webdriver.gecko.driver", "E:\\driver\\geckodriver.exe");
        WebDriver driver = new FirefoxDriver();

  Chrome瀏覽器運行方式:

  一、增長驅動路徑

System.setProperty("webdriver.chrome.driver", "E:\\driver\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();

   該例有訪問URL方式,定位元素方式、傳值方式、一處顯示等待、打印標題、關閉方式。很直觀,不算太難吧?

ps:

瀏覽器版本與驅動版本不匹配絕對是每一個人都會遇到的問題,報錯緣由千奇百怪。

常見的:WebDriverException: unknown error: call function result missing 'value'

更換瀏覽器或者驅動版本搞定:http://npm.taobao.org/mirrors/chromedriver/

相關文章
相關標籤/搜索