【问题标题】:Selenium-Webdriver NodeJS Equivalent to Java Code for DesiredCapabilitiesSelenium-Webdriver NodeJS 等价于 DesiredCapabilities 的 Java 代码
【发布时间】:2017-10-08 23:30:12
【问题描述】:

我已经搜索了位于此处 (http://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/index_exports_Capabilities.html) 的 selenium-webdriver 的文档(几乎没有)

我不知道从 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 webdriver 代码,它可以工作(并且经过编辑以删除敏感信息)但没有设置测试名称。我试过这个 .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!');

【问题讨论】:

    标签: java node.js selenium selenium-webdriver zalenium


    【解决方案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();
    

    希望这可以减轻一些人的挫败感。

    【讨论】:

    • 这是我现在正在尝试做的事情。但是,我使用的是 webdriverio,它具有配置文件中的所有功能,因此很难在测试文件中实现这些功能。
    【解决方案2】:

    感谢您发布此信息。到处找。仅供参考,您的一些真实字符串需要是布尔值。至少使用 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();
    

    【讨论】:

    • 干得好 :),如果您还有其他问题,请告诉我。
    猜你喜欢
    • 2013-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    • 2011-12-01
    • 2013-07-05
    • 1970-01-01
    • 2015-11-22
    相关资源
    最近更新 更多