ChromeドライバでSelenium Gridを実行しようとしています。
最初にハブとノードを起動しました:Java -jar Selenium-server-standalone-2.45.0.jar -role hub Java -jar Selenium-server- standalone-2.45.0.jar -role node -hub http:// localhost:4444/grid/register
テストを開始するより:
public class ChromeDriverTest {
private WebDriver driver = null;
String BaseURL,NodeURL;
@Before
public void before() throws Exception{
BaseURL="http://www.google.com";
NodeURL="http://localhost:4444/wd/hub";
File file = new File("C:\\Users\\pushkaryova\\Desktop\\Nexus\\driver\\chromedriver.exe");
System.setProperty("webdriver.chrome.driver", file.getAbsolutePath());
DesiredCapabilities capa =DesiredCapabilities.chrome();
capa.setBrowserName("chrome");
capa.setPlatform(Platform.ANY);
driver=new RemoteWebDriver(new URL(NodeURL),capa);
}
@Test
public void GoogleSearch() throws Exception {
driver.get("http://www.google.com");
WebElement searchBox = driver.findElement(By.xpath("//div[3]/div/input[1]"));
hightlight(searchBox);
driver.findElement(By.xpath("//div[3]/div/input[1]")).clear();
driver.findElement(By.xpath("//div[3]/div/input[1]")).sendKeys("Test");
driver.findElement(By.xpath("//button")).click();
}
public void hightlight(WebElement webElement) throws InterruptedException {
for (int i = 0; i < 2; i++) {
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript(
"arguments[0].setAttribute('style', arguments[1]);",
webElement, "color: red; border: 3px solid red;");
}
}
}
エラーが発生します:org.openqa.Selenium.WebDriverException:ドライバー実行可能ファイルへのパスは、webdriver.chrome.driverシステムプロパティで設定する必要があります
私のコードの何が問題になっていますか?
driver
実行可能ファイルは、ノードマシン上で物理的に利用可能である必要があります。 node
の起動時にexeへのパスを設定できます
この行をコマンドに追加します
-Dwebdriver.chrome.driver=./chromedriver.exe
私はjsonファイルからこれを設定し、それが少し簡単だとわかりました
DefaultNode.jsonという名前のjsonファイル
{
"capabilities":
[
{
"browserName": "firefox",
"maxInstances": 5,
"seleniumProtocol": "WebDriver"
},
{
"browserName": "chrome",
"maxInstances": 5,
"seleniumProtocol": "WebDriver"
},
{
"platform": "WINDOWS",
"browserName": "internet Explorer",
"maxInstances": 1,
"seleniumProtocol": "WebDriver"
}
],
"configuration":
{
"proxy": "org.openqa.grid.Selenium.proxy.DefaultRemoteProxy",
"maxSession": 5,
"port": 5555,
"Host": ip,
"register": true,
"registerCycle": 5000,
"hubPort": 4444,
"hubHost": ip
}
}
json configでノードを起動するには
Java -jar Selenium-server-standalone-2.45.0.jar -role webdriver -nodeConfig DefaultNode.json -Dwebdriver.ie.driver=.\IEDriverServer.exe
IEDriverServer.exeがjson
ファイルと同じディレクトリに配置されていることに注意してください
これは3.3.1以降で機能します
Java -Dwebdriver.chrome.driver="C:\chromedriver.exe" -jar Selenium-server-standalone-2.45.0.jar -role node -hub localhost:4444/grid/register -browser "browserName=chrome,version=ANY,platform=WINDOWS,maxInstances=20" -maxSession 20
Webdriverパスは-jarオプションの前に配置する必要があります
次のようにノードを起動できます。
Java -jar Selenium-server-standalone-2.45.0.jar -role node -hub localhost:4444/grid/register -browser "browserName=chrome,version=ANY,platform=WINDOWS,maxInstances=20" -Dwebdriver.chrome.driver="C:\chromedriver.exe" -maxSession 20
Cmdコマンドで実行可能なドライバーを指定する代わりに、より適切な方法は次のとおりです。
Java -jar **Selenium-server-standalone-3.8.1.jar** -role node -hub http://localhost:4444/grid/register
これを。batファイルとして保存し、必要なすべてのドライバ実行可能ファイルを**同じフォルダに保存としてbatファイル**として保存します。
いいえ、ノードを起動するためにbatファイルをダブルクリックすると、自動的に実行可能ファイルが取得されます。
システム変数(Windowsの場合)にchromedriver実行可能ファイルを含むフォルダーへのパスを設定できます。
これでエラーがなくなりました。
ここで次のようにjson構成ファイルに両方のプロパティを追加すると、chromeおよびFirefoxでSeleniumグリッドを使用してリモートで実行できます:最後の2行に注意してください
{
"capabilities":
[
{
"browserName": "firefox",
"marionette": true,
"maxInstances": 5,
"seleniumProtocol": "WebDriver"
},
{
"browserName": "chrome",
"maxInstances": 5,
"seleniumProtocol": "WebDriver"
},
{
"browserName": "internet Explorer",
"platform": "WINDOWS",
"maxInstances": 1,
"seleniumProtocol": "WebDriver"
},
{
"browserName": "safari",
"technologyPreview": false,
"platform": "MAC",
"maxInstances": 1,
"seleniumProtocol": "WebDriver"
}
],
"proxy": "org.openqa.grid.Selenium.proxy.DefaultRemoteProxy",
"maxSession": 5,
"port": -1,
"register": true,
"registerCycle": 5000,
"hub": "http://192.168.1.2:4444",
"nodeStatusCheckTimeout": 5000,
"nodePolling": 5000,
"role": "node",
"unregisterIfStillDownAfter": 60000,
"downPollingLimit": 2,
"debug": false,
"servlets" : [],
"withoutServlets": [],
"custom": {},
"webdriver.gecko.driver":"c:/drivers/geckodriver.exe",
"webdriver.chrome.driver":"c:/drivers/chromedriver.exe"
}