Joh*_*lly 2 java selenium webdriver selenium-webdriver
我使用selenium IDE来初始记录测试并将它们保存为Java WebDriver测试.
当我进入输入字段,删除所有文本并输入新值时,它将其记录为2个命令:
driver.findElement(By.id("username")).clear();
driver.findElement(By.id("username")).sendKeys("johnnyleitrim");
Run Code Online (Sandbox Code Playgroud)
这对我来说的一个问题是clear()事件触发"username"字段的Javascript更改事件.当我使用浏览器本身时不会发生这种情况 - 它会等到字段在触发更改javascript事件之前失去焦点,这就是我想在Selenium中模拟的内容.
我需要这个的原因是我对change()事件进行了验证,并且当使用空值调用change时,它会显示一条警告,告诉用户信息无效 - 此警报会停止Selenium
那么如何在不使用的情况下清除该字段WebElement.clear()?
您可以避免使用该clear()方法并使用Actions该类一次清除和设置文本,因此onchange()仅在设置文本后触发事件.
调用以下方法,如:
ClearAndSetText(By.id("username"),"johnnyleitrim");
Run Code Online (Sandbox Code Playgroud)
该方法单击该元素,使用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();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4329 次 |
| 最近记录: |