我正在使用Selenium HtmlUnitDriver
并且想知道是否有可能以某种方式保持此驱动程序的状态
我的意思是要在页面上测试一些东西我必须加载驱动程序 - >加载和添加cookie - >浏览登录页面 - >得到所需的页面。
每次都需要花费太多时间
有没有类似“服务器状态”的东西,或者我需要序列化并保存加载驱动程序?
谢谢。
答案 0 :(得分:0)
您可以尝试使用单例webdriver而不是为每个测试创建一个。 这样的事情:
class SingletonWebdriver {
private static Webdriver driver;
public static Webdriver getDriver() {
if(driver == null) {
createDriver();
}
return driver;
}
}
然后你可以调用getDriver来检索相同的驱动程序,但在许多情况下,最好在不同的会话中进行每个测试。
答案 1 :(得分:0)
由于我已经设法解决了我的问题,我将把它留在这里:
1.我使用selenium-server-standalone
并使用-browserSessionReuse -timeout 3600 -browserTimeout 600
运行它以使我的会话保持活跃状态
2.上课:
public class MyRemoteWebDriver extends RemoteWebDriver {
....
@Override
protected void startSession(Capabilities desiredCapabilities, Capabilities requiredCapabilities) {
String sid = loadSessionID("SID_NAME");
if (sid != null) {
super.startSession(desiredCapabilities, requiredCapabilities);
log.info("Old SID: " + sid);
setSessionId(sid);
try {
getCurrentUrl();
log.info("Old url: " + getCurrentUrl());
} catch (WebDriverException e) {
sid = null;
}
}
if (sid == null) {
super.startSession(desiredCapabilities, requiredCapabilities);
saveSessionID(getSessionId().toString());
log.info("New SID: " + getSessionId().toString());
}
}
}
所以,这样我就可以将这个SessionId存储在数据库中并重新使用它。