基于Esc取消每个浏览器和操作系统中的页面加载的假设,这应该有效:
WebElement input = driver.findElement(By.tagName("input"));
input.sendKeys(Keys.ENTER, Keys.ESCAPE);
Assert.assertFalse(input.isEnabled());
它快速连续发送Enter和Esc到按钮,以便触发 JavaScript,但页面加载没有机会启动。我能看到的唯一问题是你将无法使用这个进入下一页除非您刷新并发送新表格,否则请进行测试。但无论如何,我们一次只应该测试一个功能,所以你很好;-)。
编辑(解决您的评论)
其实,是!您可以尝试通过高级用户交互 API ( JavaDocs )Esc同时发送点击和密钥。您也可以通过这种方式实现非阻塞点击。
无论如何,这种方法仍然发送两个请求,这不是可以想象的最快的事情,但它(有时几乎没有)通过了我的测试,所以你可以试一试:
WebElement input = driver.findElement(By.tagName("input"));
new Actions(driver)
.click(input)
.sendKeys(input, Keys.ESCAPE)
.perform();
测试环境:带有本地存储文件的IE8和FF18以及Selenium 2.29.1;赢得 XP SP3。测试文件如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Test</title>
</head>
<body>
<a href="http://google.com/">
<input type="button" value="Hello." onclick="this.disabled='true';" />
</a>
</body>
</html>