我們已經創建了Selenium maven工程,下去開始真正進入到WebDriver的實戰中。
既然WebDriver是用于Web的UI自動化測試,那么測試Web的第一步就是啟動瀏覽器。那WebDriver都支持哪些瀏覽器呢?
WebDriver 支持哪些瀏覽器
WebDriver 支持主流的瀏覽器包括IE,Chrome,Firefox,Safari等等,微軟Win 10 新推出的Edge瀏覽器,Selenium 2.47.1+版本開始也得到支持。
我們在“Selenium 家族介紹“ 一節中已經知道WebDriver的工作原理,既每個瀏覽器都有對應的一個Driver,通過以之對應的Driver來驅動瀏覽器,那我們在啟動瀏覽器前,得先完成瀏覽器的配置,下載各個瀏覽器對應的Driver文件。
IE 瀏覽器
支持版本:
- Selenium 2.0 支持IE 7~11
- Selenium 3.0 支持IE 9+
IEDriverServer下載和配置
IEDriverServer下載:
我們可以從 http://selenium-release.storage.googleapis.com/index.html 下載,如果該地址打不開,可以用淘寶的鏡像地址:https://npm.taobao.org/mirrors/selenium/。
IEDriverServer 下載時得注意,你用的是什么版本的Selenium 就在對應版本里面找IEDriverServer。
例如我們現在用的是Selenium 3.5.0版本,那么我們就到3.5文件里面去下載對應的IEDriverServer,下載時還得根據自己的系統和版本。例如我是win 64位,那么我可以下載IEDriverServer_x64_3.5.0.zip,下載完成后解壓得到最終的IEDriverServer.exe文件。
下載完成后的,我們回到新建好的Senlenium maven項目工程(新建過程:http://www.lxweimin.com/p/6ca7bbcdf2dd ),在項目名中我們可以新建個名為drivers的文件夾,再把已經下載好的IEDriverServer.exe文件復制到該新建的drivers文件夾中,最終工程目錄結果如下:
IE的配置
配置IE,打開IE選項,打開安全標簽,如下圖,設置紅框部分,設置每個區域的 “啟動保護模式”,要嘛都勾選,要嘛都不勾選。
啟動IE瀏覽器
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
/**
* Created by 米陽 on 7/9/2017.
*/
public class OpenBrowserTest {
public static void main(String args[]) {
openIE();
}
private static void openIE() {
// 設置系統變量,并設置iedriver的路徑為系統屬性值
System.setProperty("webdriver.ie.driver", ".\\drivers\\IEDriverServer.exe");
// 實例化 InternetExplorerDriver
WebDriver driver = new InternetExplorerDriver();
}
}
Chrome 瀏覽器
ChromeDriver下載地址:
chromedriver下載時也需要下載到匹配的版本,特別是chrome瀏覽器和chromedriver的版本需要匹配。那如何查看自己的chrome需要下載哪個版本的chromedriver呢?通常使用最新版的chrome和最新版的chromedriver便可,但如果你并非都是最新版的,那么可以到:https://sites.google.com/a/chromium.org/chromedriver/downloads這里面去查看到你的哪個版本的chromedriver支持你所使用的chrome版本。
當確定好符合你使用的chromedriver版本時,可以到http://chromedriver.storage.googleapis.com/index.html,國內用戶也可以到淘寶npm鏡像(http://npm.taobao.org/mirrors/chromedriver)去下載對應版本的chromedriver版本。最后將下載下來的chromedriver解壓后放于跟IEDriverServer.exe 相同位置,如下圖:
啟動Chrome瀏覽器
在剛新建的OpenBrowser_Test類中添加如下方法:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
/**
* Created by 米陽 on 7/9/2017.
*/
public class OpenBrowserTest {
public static void main(String args[]) {
openChrome();
}
private static void openChrome() {
// 設置系統變量,并設置chromedriver的路徑為系統屬性值
System.setProperty("webdriver.chrome.driver", ".\\drivers\\chromedriver.exe");
// 實例化ChromeDriver
WebDriver driver = new ChromeDriver();
}
}
Firefox 瀏覽器
火狐瀏覽器得分兩種情況處理。
- 當火狐的版本<=47時,我們不需要額外的設置。當時如果安裝時沒有使用默認安裝路徑,那么和使用默認安裝路徑在代碼處理上會有點不同:
- 默認安裝路徑,我們可以直接實例化一個FirefoxDriver,便可:
public static void main(String args[]) {
openFirefoxDef();
}
private static void openFirefoxDef(){
// 實例化 FirefoxDriver, 啟動Firefox
WebDriver driver = new FirefoxDriver();
}
- 如果火狐不是默認安裝路徑,你需要制定火狐按路徑:
public static void main(String args[]) {
openFireFoxTest();
}
public void openFireFoxTest(){
// 指定firefox 安裝路徑
System.setProperty("webdriver.firefox.bin","C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
// 啟動firefox瀏覽器
WebDriver driver = new FirefoxDriver();
}
- 當火狐版本V48+時,那么想啟動火狐瀏覽器,我們得去下載火狐對應的geckodriver。下載地址:https://github.com/mozilla/geckodriver/releases,基本下載最新版便可。那么我看下這時我們如何啟動Firefox:
public static void main(String args[]) {
openFirefoxByGeck();
}
private static void openFirefoxByGeck() {
// 設置系統變量,并設置 geckodriver 的路徑為系統屬性值
System.setProperty("webdriver.gecko.driver", ".\\drivers\\geckodriver.exe");
// 實例化 FirefoxDriver
WebDriver driver = new FirefoxDriver();
}
Edge瀏覽器
win 10 系統微軟推出了全新的Edge瀏覽器,同樣上面提到Selenium 2.47.1版本開始開始支持這一瀏覽器,但是你的Win 10的build版本必須大于或者等于10240版本也就是說你的edge瀏覽器版本需要是10240版本以上,那如何去查看自己的系統版本,很簡單打開控制臺,輸入ver,顯示如下的。
通常edge版本跟系統版本是一致的,但是如果你真的想查看edge版本,只需要打開edge的設置,便可看到:
另外值得注意的是從微軟官方 https://developer.microsoft.com/en-us/microsoft-edge/platform/documentation/webdriver-commands/ 中我們可以得知,如果你想使用XPath Selector(后面會講這種重要的頁面定位方式)那么你的build版本需要大于等于10586。
如果你的系統滿足要求,那恭喜你可以繼續往下。
準備
Edge跟IE類似,同樣我們需要去下載對應的driver,下載地址:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/ ,需要注意的是根據你上面所查到的系統版本去下載對應的MicrosoftWebDriver,不然會報錯。而且下載有兩種一種是MicrosoftWebDriver.exe文件,一種是MicrosoftWebDriver.msi文件,如果你下載到的是.msi文件,那就雙擊運行按正常軟件安裝便可。如果你下載到的是MicrosoftWebDriver.exe文件,那就直接剪切放進項目的drivers文件夾中:
啟動Edge瀏覽器
我們還是直接在OpenBrowser_Test類中添加如下方法:
public static void main(String args[]) {
openEdge();
}
private static void openEdge() {
// 指定MicrosoftWebDriver路徑
System.setProperty("webdriver.edge.driver", ".\\drivers\\MicrosoftWebDriver.exe");
// 啟動 Edge瀏覽器
WebDriver driver = new EdgeDriver();
}
PhantomJS 瀏覽器
phantomjs比較特殊的一個瀏覽器,它實現了一個無界面的webkit瀏覽器。雖然沒有界面,但dom渲染、js運行、網絡訪問、canvas/svg繪制等功能都很完備,在頁面抓取、頁面輸出、自動化測試等方面有廣泛的應用。但目前已經處于不再維護狀態。為啥?我們后面會講到它的替代品。
最后一個重要補充:
當我們new一個XXXDriver()時,我們啟動的是一個全新的瀏覽器(沒有預裝插件,沒有緩存,沒有cookies等等)