Селеновая сетка с драйвером Chrome (WebDriverException: путь к исполняемому файлу драйвера должен быть задан системным свойством webdriver.chrome.driver)
Я пытаюсь запустить Selenium Grid на драйвере Chrome.
Сначала я запустил концентратор и узел: java -jar selenium-server-standalone-2.45.0.jar -role hub java -jar selenium-server-standalone-2.45.0.jar -role узел -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
Что не так в моем коде?
4 ответа
driver
исполняемый файл должен быть доступен физически на компьютере узла. Вы можете установить путь к exe при запуске node
Добавьте эту строку в команду
-Dwebdriver.chrome.driver=./chromedriver.exe
Я настроил это из файла JSON и обнаружил, что это немного проще
JSON-файл с именем DefaultNode.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 конфиг
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
Путь веб-драйвера должен быть помещен перед опциями -jar
Я мог запустить Chrome и Firefox удаленно, используя сетку селена, когда я добавил оба свойства в файл конфигурации json следующим образом: обратите внимание на последние две строки
{
"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"
}
Вы можете начать свой узел как:
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
Вы можете установить путь к папке, содержащей исполняемый файл chromedriver, в системных переменных (для Windows).
Это избавило меня от ошибки.
Вместо того, чтобы указывать исполняемый файл драйвера в команде cmd, лучше было бы:
java -jar **selenium-server-standalone-3.8.1.jar** -role node -hub http://localhost:4444/grid/register
Сохраните его как файл .bat и храните все необходимые исполняемые файлы драйвера в ** той же папке, что и файл bat **.
Нет, если дважды щелкнуть файл bat, чтобы запустить узел, он автоматически подберет исполняемые файлы.