曲折的WebDriver環境搭建(selenium WebDriver eclipse 環境搭建)

   最近沉迷於上課,各種奔波於課上和在去上課的的路上,最酸爽的還是在慢慢的課程之中穿插上一兩門考試,就這個feel就是相當的讓人不想再次體驗。好不容易考完試,結果爲了複習而欠下的各種實驗課的的作業又成了一大筆“賬單”。


    今天在進行還債的時候,剛好翻到軟件測試測試的實驗,實驗題目是通過腳本使用自動化測試工具測試。

   在這裏我們使用的工具是selenium + junit,本來看着這樣的操作,剛開始感覺挺簡單的,於是就開始隨性的自己按照自己的想法開始配置環境,然後結果就是——你小瞧他,它就刁難你。然後一不小心一個下午就在環境的配置中悄然流逝。


   好吧,廢話就不多說啦,我們直接開始進行環境配置吧。


一、下載瀏覽器

    在這裏我們使用的是FireFox瀏覽器,在使用的時候需要注意,所用的firefox版本不能太高也不能太低,版本太高就比如,Firefox 57的版本就不支持selenium。(實驗表明,無論是在Firefox的官方插件庫,還是selenium的官網上,都直接顯示不支持,,,),現在我使用的是Firefox 56.0.2 完全可以使用並且能夠成功運行。

firefox

此版本過高…


   然後下載完瀏覽器之後,我們需要將Firefox配置到環境變量中,這樣就能使得工具能夠直接打開Firefox,具體的操作就是找到Firefox的安裝目錄,並將Firefox的安裝目錄的路徑複製,然後在環境變量的Path中添加一行,將FireFox的安裝路徑粘貼,然後保存就好。

   如果環境變量配置成功,那麼直接打開cmd,向其中輸入firefox就能直接打開Firefox瀏覽器。

   大家也可以根據這個博客(http://blog.163.com/wxiaoch_0904/blog/static/96091031201352134033340/)設置一下,讓Firefox成爲測試專用的版本。

二、安裝selenium工具

   這一步,直接在在火狐的插件庫中搜索selenium builder然後點擊安裝,並重啓瀏覽器,就可以直接使用了。

add-on

三、下載geckoDriver

   下載這個驅動的原因是因爲在Selenium升級成3.x之後,我們必須下載geckoDriver這個驅動,然後通過這個驅動來將火狐瀏覽器啓動。

   對於selenium3.x,他支持了一些新的特性,主要有以下幾點:

    1. 去掉了對selenium rc的支持,標誌着webdriver協議最終完成大一統;
    2. 全面支持java8,如果需要使用selenium和Java binding,就必須使用java 8.
    3. 對於火狐來說,Mozilla官方通過geckodriver來支持firefox。
    4. 支持macOS
    5. 通過Microsoft瓜房的webdriver server支持Edge瀏覽器
    6. 只支持ie 9.0版本及以上


    因此,鑑於我這邊使用的selenium是相當新的selenium-3.6,因此我們需要通過geckodriver來對火狐瀏覽器進行啓動。

    下載地址:https://github.com/mozilla/geckodriver/

    同時,注意這個下載完成之後,也需要將它配置到環境變量中。

四、實例運行

    看樣子,我們在上面的幾個步驟上已經將大致的準備工作全部完成了。那麼現在我們就開始通過一個實例進行網頁的檢驗。


(一)使用selenium builder來錄製我們的點擊事件

    我們在下載並安裝火狐之後,安裝了selenium builder插件,那麼我們現在開始使用這個插件進行操作的錄製。

    那麼我們首先將火狐打開到我們想要測試的網頁上,比如說京東(jd.com),然後點擊開發者 –> Launch Selenium Builder,然後待測的網頁就會自動添加到我們的輸入框中,然後點擊Record按鈕,就可以開始進行操作的錄製:

pic2
pic1

   我們可以明顯的發現,我們的操作已經全部被錄製上,那麼我們停止錄製,並通過以上的額file按鈕選擇導出,然後導出爲java/junit文件。保存,那麼我們就得到了一個測試用例。

/**
* @author Mica_Dai
* @modify_time 2017/11/5
* java test case
*/
import org.junit.After;
import org.junit.Before;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;

import java.util.concurrent.TimeUnit;
import java.util.Date;
import java.io.File;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.*;
import static org.openqa.selenium.OutputType.*;

public class jd {
    FirefoxDriver wd;

    @Before
    public void setUp() throws Exception {
        wd = new FirefoxDriver();
        wd.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
    }

    @Test
    public void jd() {
        wd.get("https://www.jd.com/");
        wd.findElement(By.xpath("//div[@id='header']/div")).click();
        wd.findElement(By.id("J-toolbar-load-hook")).click();
        wd.findElement(By.linkText("秒殺")).click();
        wd.findElement(By.cssSelector("span.ui-areamini-text")).click();
        wd.findElement(By.linkText("陝西")).click();
        wd.findElement(By.id("J-toolbar-load-hook")).click();
        wd.findElement(By.linkText("clarks休閒運動鞋")).click();
    }

    @After
    public void tearDown() {
        wd.quit();
    }

    public static boolean isAlertPresent(FirefoxDriver wd) {
        try {
            wd.switchTo().alert();
            return true;
        } catch (NoAlertPresentException e) {
            return false;
        }
    }
}


(二)創建java project

   我們已經獲取測試用例的腳本,現在我們打開eclipse,然後創建一個新的java project。並向其中導入selenium-server-standalone-3.6.0.jar的包。然後將我們在上一步驟中得到的java文件導入到包內。


(三)運行腳本實現自動化

   爲了運行這一程序,我們新建一個main函數。然後設置屬性,使用geckodriver來啓動火狐瀏覽器:

/**
* @author Mica_Dai
* @modify_time 2017/11/5
* java test case
*/
   public static void main(String[] args){
        System.out.println("hello");
        System.setProperty("webdriver.firefox.bin", "path of  firefox.exe");
        System.setProperty("webdriver.gecko.driver", "path of geckodriver.exe");
        test();
   }


   其中,以上的System.setProperty()的兩個參數實際上是一個鍵值對,第一個參數是表示的環境變量,第二個參數就是兩個軟件實際在本機上的位置。


   貌似現在我們已經完全弄好了,實際上,我們現在還需要啓動selenium服務:主要步驟就是直接進到selenium-server-standalone-3.3.1.jar所在的文件目錄下,然後在該目錄下打開命令行,向其中敲入:

java -jar selenium-server-standalone-3.3.1.jar

   然後我發現:

error

   命途多舛!還是沒能打開,這怎麼辦呢,然後網上查找,得到了以下的結果:

一、錯誤現象:

   當改變了jdk版本時,在編譯java時,會遇到Unsupported major.minor version錯誤。

   錯誤信息如下 :

Unsupported major.minor version 50.0
Unsupported major.minor version 49.0 (我在jdk1.4 和1.5切換時就遇到了這個錯誤)
Unsupported major.minor version 48.0

二、錯誤原因:

   類似錯誤均屬於Java版本問題,即JDK版本過低,只要選擇相對應的JDK版本編譯即可。

   48,49,50是Java編譯器內部的版本號:

Unsupported major.minor version 50.0 對應於 JDK1.6(JRE1.6)
Unsupported major.minor version 49.0 對應於 JDK1.5(JRE1.5)
Unsupported major.minor version 48.0 對應於 JDK1.4(JRE1.4)


   什麼???java版本不對????

   我現在就是真的很難受,前一次測試課,實驗內容要求使用java1.7,然後剛將自己電腦中的java1.8完全卸載!!!!現在同一堂課,竟然又要使用java1.8!!!!哎,沒什麼辦法,只能下載啦——

   然後,下載並配置好環境之後重新啓動:

pass

   好啦一切正常,然後再次點擊運行java代碼,然後就可以看到瀏覽器自動就開始執行我們錄製的腳本啦。

   以上。


參考了以下的文檔:

http://blog.csdn.net/pengbin790000/article/details/76696714
https://github.com/mozilla/geckodriver/
http://blog.csdn.net/xinyuehuixin/article/details/70169725
http://www.oschina.net/question/207494_84715

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章