2017-02-07 106 views
1

爲了在差異瀏覽器上執行測試腳本,我們從seleniumhq.com下載了特定瀏覽器驅動程序並運行腳本。爲什麼我們需要下載瀏覽器(IE,Chrome)驅動程序

此代碼工作正常,因爲它應該:

System.setProperty("webdriver.ie.driver", "C:\\Users\\Public\\CIO\\resources\\iedriver.exe"); 

WebDriver driver = new InternetExplorerDriver(); 
driver.get("www.mywebsite.com"); 

當我已經IE瀏覽器可執行-'iexplore.exe」我的機器上,不能硒的webdriver用它來啓動IE瀏覽器?

爲什麼我們要特意從seleniumhq.com這裏下載IEDriver

C:\Program Files\Internet Explorer\iexplore.exe 

我試着甚至設置並運行程序。瀏覽器得到了與地址推出,但是--port=1234/它不能定位到相應的網站,並最終拋出異常:

異常線程「main」 org.openqa.selenium.remote.UnreachableBrowserException: 無法啓動新的會話。可能的原因包括遠程服務器地址無效或瀏覽器啓動失敗。 生成信息:版本: '2.28.0',修訂版: '18309',時間: '2012年12月11日20點21分18秒'

回答

5

「瀏覽器驅動程序」 是實現了的webdriver的wire protocol服務器,並知道如何將這些命令轉換爲特定瀏覽器的專有本地API。

WebDriver site解釋:

硒的webdriver使得使用自動化每個 瀏覽器的原生支持的瀏覽器直接調用。如何直接撥打 ,他們支持的功能取決於您使用的瀏覽器是否爲 。

例如,ChromeDriver wiki把它描述爲如下:

的ChromeDriver由三個獨立的部分。有一個 瀏覽器本身(「chrome」),由Selenium項目(「驅動程序」)提供的語言綁定和從 Chromium項目下載的可執行文件,該項目充當「chrome」和驅動程序「 」之間的橋樑」。

本質上,瀏覽器不知道如何「說話」WebDriver Wire Protocol,而WebDriver不知道如何「說話」瀏覽器API。實際上,每個瀏覽器都有自己的本地API。 「瀏覽器驅動程序」知道如何解釋Wire協議並調用該瀏覽器的API。

+1

很好的解釋。也可以參考這個鏈接https://www.quora.com/How-does-the-Selenium-WebDriver-work – shank087

+0

@SkinnyJ upvoted的解釋,但一個簡單的問題,如果必須有一箇中間層的webdriver瀏覽器通信那麼爲什麼同樣不適用於Firefox? – SelThroughJava

+0

@SelThroughJava - selenium包附帶驅動firefox瀏覽器的webdriver.xpi。它應該在org-> openqa-> selenium-> firefox文件夾下。對於Firefox 48及以上版本,請參閱下面的鏈接http:// stackoverflow。COM /問題/ 38916650 /什麼,是最優點,使用,提線木偶,firefoxdriver-代替的最老 - 新綸的-/ 38917100#38917100 – shank087

相關問題