Divi对问题2的回答很好。对于第 1 部分,您可以检查元素是否像您所说的那样显示:
webElement.isDisplayed();
或者您可以比较事件前后页面的 html。
driver.getPageSource();
(如果在每个事件之后发生更改,您也可以检查 url)。
获取 html 源的一个问题是事件可能在您最后一次操作之后触发并且尚未完成,从而使 html 保持不变。要解决此问题,您可以检查以下一些条件:
(Boolean) ((JavascriptExecutor)driver).executeScript("return jQuery.ready");
((JavascriptExecutor)driver).executeScript("return document.readyState").equals("complete");
或者您可能正在使用另一个 javascript 框架,该框架具有类似于 jQuery.ready 的另一个功能。
最后,您可能会遇到事件仅在您更改活动元素、跳出字段等后才会触发的问题。因此您可以运行以下内容:
Actions actionObject = new Actions(driver);
actionObject.sendKeys(Key.TAB).perform();
或者你可以使用 javascript 来设置它(我没有检查下面的代码,我会将 webElement 设置为 html 基本元素):
((JavascriptExecutor) driver).executeScript("arguments[0].focus();", webElement);
我不建议使用 webdriver 来单击 body 元素,因为这可能会撤消您的最后一次单击。
为了完整起见,我将 Divi 对问题 2 的回答包括在内:
我们可以通过获取页面的 url 并将其与预期的 url 进行比较来检查它是否重定向到另一个页面
WebDriver driver;
driver.getCurrentUrl() // will returns the String value
如果您当前的网址与您的预期网址不匹配,则意味着您有两种方法
1)您可以使用硒(或)网络驱动程序导航方法中的打开功能再次打开您的预期网址
driver.navigate().to("expected_url");
2)您可以使用后退导航
driver.navigate().back();