当我在nodejs中发送reutn键时,它会出错?
driver.findElement(By.id('twofactorcode_entry')).sendKeys(Keys.ENTER);
所有网站告诉我这是我需要使用的?任何帮助,请
答案 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