gpt4 book ai didi

java - WebElement.clear() 触发 javascript 更改事件 - 替代方案?

转载 作者:行者123 更新时间:2023-12-05 00:44:02 25 4
gpt4 key购买 nike

我使用 selenium IDE 来最初记录测试并将它们保存为 Java WebDriver 测试。

当我进入输入字段,删除所有文本并输入一个新值时,它会将其记录为 2 个命令:

driver.findElement(By.id("username")).clear();
driver.findElement(By.id("username")).sendKeys("johnnyleitrim");

这对我来说有一个问题是 clear() 事件会为“用户名”字段触发 Javascript 更改事件。当我使用浏览器本身时,这不会发生 - 它会等到字段失去焦点,然后再触发 change javascript 事件,这就是我想在 Selenium 中模拟的。

我需要这个的原因是我对 change() 事件进行验证,当用空值调用 change 时,它​​会显示一个警告,告诉用户信息无效——这个警告会停止 Selenium

那么如何在不使用 WebElement.clear() 的情况下清除字段?

最佳答案

您可以避免使用 clear() 方法并使用 Actions 类一次性清除和设置文本,因此触发 onchange() 事件仅在设置文本后发生。

调用如下方法:

ClearAndSetText(By.id("username"),"johnnyleitrim");

该方法单击元素,使用 shift+home 键选择现有文本,使用退格键清除,然后输入新文本 - 就像用户的操作一样。

public void ClearAndSetText(By by, string text)
{
WebElement element = driver.findElement(by);
Actions navigator = new Actions(driver);
navigator.click(element)
.sendKeys(Keys.END)
.keyDown(Keys.SHIFT)
.sendKeys(Keys.HOME)
.keyUp(Keys.SHIFT)
.sendKeys(Keys.BACK_SPACE)
.sendKeys(text)
.perform();
}

关于java - WebElement.clear() 触发 javascript 更改事件 - 替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19833728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com