Node.JS selenium发送密钥输入

时间:2017-01-02 14:45:06

标签: node.js selenium

当我在nodejs中发送reutn键时,它会出错?

driver.findElement(By.id('twofactorcode_entry')).sendKeys(Keys.ENTER);

所有网站告诉我这是我需要使用的?任何帮助,请

5 个答案:

答案 0 :(得分:6)

我假设你正在使用npm包Selenium Webdriver:https://www.npmjs.com/package/selenium-webdriver

错误键未定义,因为您在使用之前尚未定义键。您需要使用枚举密钥(https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/index_exports_Key.html

它是驱动程序模块上的常量并导出为Key(请注意单数形式)。我已将更新的代码放在下面。

const driver = require('selenium-webdriver');


driver.findElement(By.id('twofactorcode_entry')).sendKeys(driver.Key.ENTER);

额外提示:我一直在使用http://webdriver.io/,它比这个库更容易使用

答案 1 :(得分:1)

这对我有用

const {Builder, By, Key, until} = require('selenium-webdriver');
 
(async function example() {
  let driver = await new Builder().forBrowser('firefox').build();
  try {
    await driver.get('http://www.google.com/ncr');
    await driver.findElement(By.name('q')).sendKeys('webdriver', Key.RETURN);
    await driver.wait(until.titleIs('webdriver - Google Search'), 1000);
  } finally {
    await driver.quit();
  }
})();

答案 2 :(得分:0)

//或者在顶部定义Keys变量.....例如

var webdriver = require('selenium-webdriver'),
Keys = webdriver.Key,
By = webdriver.By,
until = webdriver.until;

答案 3 :(得分:0)

由于某种原因,其他解决方案对我不起作用。

使用Node.js,看来您可以只使用\n进行输入:

await driver.findElement(By.id('my-field-id')).sendKeys('my-value\n');

答案 4 :(得分:0)

您从“selenium-webdriver”导入密钥,但您正在使用

<块引用>

按键.ENTER

但应该是

<块引用>

键.ENTER