2014-02-10 73 views
0

我想使用webdriver中提供的功能並設置瀏覽器版本。我的Chrome版本爲32,但試圖運行我的測試在Chrome 30webdriver使用瀏覽器版本

System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir")+"/drivers/win/chromedriver.exe"); 

    DesiredCapabilities caps = DesiredCapabilities.chrome(); 
    caps.setCapability("version", "30"); 
    WebDriver wd = new ChromeDriver(caps); 
    System.out.println(((RemoteWebDriver) wd).getCapabilities().getVersion()); 

當我打印瀏覽器版本的印刷瀏覽器版本爲32,但我在功能設置瀏覽器版本爲30。我如何以正確的方式使用此功能。

+0

我使用的是鍍鉻版本32.0.1700.107 m – pavanraju

回答

2

不,你不能。由於您的測試是在使用Chrome 32的計算機上運行的,因此您無法將其設置爲Chrome 30,因爲您沒有Chrome 30.

即使驅動程序未拋出驅動程序,也不一定會創建Web驅動程序實例DesiredCapabilities錯誤,如果它不支持您請求的功能。這就是Selenium的設計。

有關DesiredCapabilities的更多信息,請參閱this question。我引用JimEvans的回答:

該API指定將所需功能傳遞給構造函數 。但是,驅動程序不支持在所需功能中請求的功能的情況可能是這種情況。在這種情況下, 驅動程序不會拋出任何錯誤,這是故意的。會話返回一個 功能對象,該對話指示會話實際支持的功能。

這就是在這種情況下實際發生的情況。 PhantomJS驅動程序 不支持處理警報,返回的功能對象 表示同樣多。在大多數語言綁定中,返回的 功能對象是隻讀的;在返回對象可以讀寫的語言綁定中,修改這些功能在會話上沒有 實際影響。在待定的W3C WebDriver 規範中,有一個requiredCapabilities設置,如果服務器無法提供此功能, 會拋出一個異常,但 尚未由任何驅動程序實現,但據我所知。