RemoteWebDriver可以理解為咖熟,環(huán)境部署在Machine A圃酵,然后執(zhí)行Machine B的瀏覽器上,遠程的優(yōu)點是:
- 可以更方便的進行跨平臺馍管、瀏覽器的測試
- 避免環(huán)境污染郭赐,使用一個純凈的機器
這里,我們remote browser 使用的是docker 搭建的server确沸,提供各種remote browser捌锭。
廢話不多說,直接Part 1罗捎,配置maven观谦;Part 2,code demo
Part 1桨菜,配置maven
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-firefox-driver</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-chrome-driver</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-ie-driver</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-support</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.4.0</version>
</dependency>
強調(diào):;碜础!@准ぁL媸摺!J合尽3星拧!8俊P滓臁!<费病J1颉!?蟊啊:砹怠!!G岷凇:簟!Cケ伞9萑唷!
使用version 3.4.0以上的版本吧抖拦,一開始使用的是2升酣,47的版本,那叫一個慘不忍睹态罪,就是不過噩茄。
WebDriver driver = new RemoteWebDriver(URL remoteAddress, Capabilities desiredCapabilities)
這里要看到 sessionId有值,才算可以連接成功向臀。
前方高能巢墅,有大坑:
Exception:
java.lang.NoSuchMethodError: com.google.common.collect.ImmutableSet.toImmutableSet()Ljava/util/stream/Collector;
at org.openqa.selenium.remote.ProtocolHandshake.streamW3CProtocolParameters(ProtocolHandshake.java:284)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:149)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:142)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:637)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:250)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:236)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:137)
當看到這一部分call stack诸狭,恭喜你券膀,請在pom中加入:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>21.0</version>
</dependency>
Part 2,code demo
DesiredCapabilities ffDesiredcap= new DesiredCapabilities("firefox", "57.0", Platform.LINUX);
WebDriver driver = new RemoteWebDriver(new URL("http://" + "remoteip" + ":4444/wd/hub"), ffDesiredcap);
driver.manage().window().maximize();
就這么一小段驯遇,三個參數(shù):"firefox", "57.0"芹彬,"remoteip" ;瀏覽器類型叉庐,瀏覽器版本舒帮,遠程ip