问题描述
在跨平台运行自动化测试时,存在登录冲突,我通过创建一种在两个平台之间切换之前重置浏览器会话的方法来解决了该冲突:
public RemoteWebDriver resetDriverSession() {
if (this.driver != null) {
this.driver.quit();
}
return getInstance();
}
这在本地工作,但是在browserstack上运行时,此方法退出会话。 我还创建了一种使用Chrome用户界面(版本86.0.4240.111)清除历史记录的方法
case CLEAR_CACHE:{
RemoteWebDriver driver = driverFactory.getInstance();
driver.manage().deleteallCookies();
driver.get("chrome://settings/clearbrowserData");
driver.switchTo().activeElement();
driver.findElement(By.cssSelector("* /deep/ #clearbrowsingDataConfirm")).click();
//driver.findElement(By.xpath("//*[@id=\"clearbrowsingDataConfirm\"]")).sendKeys(Keys.ENTER);
//driver.findElement(By.xpath("//settings-ui")).sendKeys(Keys.ENTER);
break;
}
}
此方法将打开Chrome历史记录设置,但不会单击“清除数据”按钮。请问有人在这里出问题了吗?
解决方法
我认为BrowserDriver总是会在driver.quit();时终止会话。将被执行。您可能想尝试其他方法/替代方法来实现相同的用例。