保持Selenium浏览器处于活动状态

时间:2015-07-15 19:06:40

标签: java selenium

我正在使用Selenium HtmlUnitDriver并且想知道是否有可能以某种方式保持此驱动程序的状态 我的意思是要在页面上测试一些东西我必须加载驱动程序 - >加载和添加cookie - >浏览登录页面 - >得到所需的页面。 每次都需要花费太多时间 有没有类似“服务器状态”的东西,或者我需要序列化并保存加载驱动程序? 谢谢。

2 个答案:

答案 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存储在数据库中并重新使用它。

相关问题