为什么selenium js不发送enter键,即使sendkeys有效?

wljmcqd8  于 2021-09-23  发布在  Java
关注(0)|答案(1)|浏览(355)

我有一个元素 <input> 我把钥匙寄给你 await element.sendKeys("example") . 这项工作始终如一,毫无问题。
但是,当我发出 await element.sendKeys(Key.ENTER) ,什么也没发生。
我可以通过等待1s(呃)或偷偷地使用 await element.click() 在两个sendkeys函数之间

// Only sends the "example"
await element.sendKeys("example")
await element.sendKeys(Key.ENTER)

// Works
await element.sendKeys("example")
await element.click()
await element.sendKeys(Key.ENTER)

这可能是什么原因造成的?我很困惑,因为第一个sendkeys有效,而第二个不起作用。任何其他 <input> 在同一个项目中工作正常。dom的 <body> 在点击之前和之后,所以没有任何道具发生变化。

ecr0jaav

ecr0jaav1#

可能问题在于同步。
您是否尝试使用显式等待?
演示:

const documentInitialised = () =>
    driver.executeScript('return initialised');

await driver.get('file:///race_condition.html');
await driver.wait(() => documentInitialised(), 10000);
const element = driver.findElement(By.css('p'));
assert.strictEqual(await element.getText(), 'Hello from JavaScript!');

可能有一个明确的等待将解决这个问题。
大概是这样的:

let ele = await driver.wait(until.elementLocated(By.css('p')), 10000);
await ele.sendKeys("example")
await ele.sendKeys("Key.ENTER")

相关问题