Selenium-Webdriver NodeJS Эквивалент Java-кода для DesiredCapabilities
Я просмотрел документацию (что там мало) для селена-вебдрайвера, расположенного здесь ( http://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/index_exports_Capabilities.html)
Я не могу узнать, какой будет эквивалентный код от Java до NodeJS.
Вот код в JAVA (который я копирую отсюда в разделе "Параметры конфигурации теста", https://github.com/zalando/zalenium/blob/master/docs/usage_examples.md#initial-setup)
DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
desiredCapabilities.setCapability(CapabilityType.BROWSER_NAME, BrowserType.FIREFOX);
desiredCapabilities.setCapability(CapabilityType.PLATFORM, Platform.LINUX);
desiredCapabilities.setCapability("name", "myTestName");
В частности, я хочу установить возможность "имя", чтобы я мог называть свои тесты с помощью Zalenium.
Как мне это сделать в NodeJS?
Это мой текущий код веб-драйвера selnium, который работает (и был отредактирован для удаления конфиденциальной информации), но не устанавливает имя теста. Я пробовал это.withCapabilities(webdriver.Capabilities.chrome(),{"name","chrometest"}), и он компилируется, но я не думаю, что он что-то делает?
//Run using this project (https://github.com/qmu/dockerfiles/blob/master/src/selenium-webdriver-node/example/bin/run)
"use strict";
const webdriver = require('selenium-webdriver'),
By = webdriver.By,
until = webdriver.until,
test = require('selenium-webdriver/testing');
//const expect = require('expect.js');
const assert = require('assert');
var driver = new webdriver.Builder()
.withCapabilities(webdriver.Capabilities.chrome())
.usingServer('http://localhost:4444/wd/hub')
.build();
console.log('starting chrome...');
driver.manage().timeouts().implicitlyWait(10 * 1000);//10 seconds
driver.get('http://somewebsite.tech');
driver.findElement(webdriver.By.name('_username')).sendKeys('**');
driver.findElement(webdriver.By.name('_password')).sendKeys('**');
driver.findElement(webdriver.By.css("button")).click();
driver.quit();
//FIREFOX TESTS
console.log('starting firefox...');
var driver = new webdriver.Builder()
.withCapabilities(webdriver.Capabilities.firefox())
.usingServer('http://localhost:4444/wd/hub')
.build();
driver.manage().timeouts().implicitlyWait(30 * 1000);//10 seconds
driver.get('http://somewebsite.tech/');
driver.findElement(webdriver.By.name('_username')).sendKeys('**');
driver.findElement(webdriver.By.name('_password')).sendKeys('**');
driver.findElement(webdriver.By.css("button")).click();
driver.quit();
console.log('all modules are ready!');
1 ответ
Хорошо, я узнал ответ. Оказывается, вы просто определяете его как дополнительные параметры в объекте.
var driver = new webdriver.Builder()
.withCapabilities({'browserName': 'chrome','name':'Chrome Test','tz':'America/Los_Angeles','build':'Chrome Build','idleTimeout':'60'})
.usingServer('http://localhost:4444/wd/hub')
.build();
Надеюсь, это спасет кого-то от разочарования.
Спасибо, спасибо, что разместили это. Искал везде. Как и в случае с FYI, некоторые из ваших настоящих строк должны быть логическими. По крайней мере, с geckodriver-v0.26.0, selenium 3.8.1, nodejs 10 и Centos6.
const driver = new webdriver.Builder()
.forBrowser('firefox')
.withCapabilities({"browserName": "firefox","acceptSslCerts": true,"acceptInsecureCerts": true})
.setFirefoxOptions(options)
.build();