我在文档的某处读到 WebDriver API 是非阻塞的(除了一些像 driver.get 的)。因此,执行 WebElement click() 或 isDisplayed() 通常应该是异步的(当然,假设启用了本机事件)。
我有一个简单的 HTML 页面,它执行一个长操作(基本上是一个长循环)。当 JS 执行时,浏览器没有响应,这是预期的。但我也注意到,只要浏览器忙于执行脚本,WebDriver API 就像 click()/isDisplayed()/executeScript() 块一样。
由于 WebDriver 为点击发出原生事件,而不是合成的 JS 事件,我很困惑为什么 API 会阻塞。虽然目前这种行为并没有困扰我,但我想知道在对无响应的页面运行测试时是否可以依赖这种阻塞性质?我确实在我的测试中使用了条件等待,但想了解幕后发生了什么以及这是否是特定于浏览器/操作系统的?
我在 Windows 7 上使用 InternetExplorerDriver (IE9) 和 ChromeDriver (Chrome 19) 在 Selenium 2.20.0 中看到了这种行为。