繁体   English   中英

如何在Selenium Webdriver中使用相同的会话打开浏览器?

[英]How to open an browser using the same session in Selenium Webdriver?

我有一个应用程序自动化框架,其中应用程序实际上被视为浏览器。 现在,这是我的功能。

通常它会始终启动登录页面。 现在我的测试用例要求我首先崩溃应用程序,然后重新启动它,这将指向一些“错误报告”页面,而不是这次启动登录页面。

如果我从命令提示符执行此操作此功能正常,因为每个命令提示符窗口都是一个会话,所以基本上它崩溃并在同一会话中重新打开。

现在这在通过webdriver运行时不起作用,因为每次@BeforeClass运行时,它都会创建一个新的应用程序实例,因此我会再次指向登录页面而不是指向错误页面。

有关如何在同一会话中实现崩溃和重新启动应用程序的任何建议都会有很大帮助。 我只提供了调用驱动程序的代码的一小部分。

protected void setupChromeRemoteDriver(String hubUrl, String platformName) throws IOException {

        Platform platform = (platformName != null) ? Platform.valueOf(platformName) : Platform.ANY;

        DesiredCapabilities capabilities = DesiredCapabilities.chrome();
        capabilities.setBrowserName("chrome");
        capabilities.setPlatform(platform);
        capabilities.setCapability(CapabilityType.TAKES_SCREENSHOT, true);

        Set<Cookie> cookies = driver.manage().getCookies();
        for(Cookie cookie : cookies){
            driver.manage().addCookie(cookie);
        }

        driver = new CustomRemoteWebDriver(new URL(hubUrl), capabilities);
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(Constants.ELEMENT_TIMEOUT_SECONDS, TimeUnit.SECONDS);
    }

CrashApplication.java

public void crashUTAApp(){
        String filePath = Constants.CRASHAPP_BATCHFILE_LOCATION;
        try{
            Process process = Runtime.getRuntime().exec(filePath); 
            if(null != process && process.waitFor() == 0 && process.exitValue() == 0){
                Reporter.log("App Crashed");
            }else{
                Reporter.log("Failed to crash app");
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    } 

实现此目的的一种可能的解决方法是在测试junit类中使用@Before注释并从其中调用CrashApplication。 这样你就可以使用@BeforeClass启动驱动程序并在@Before中执行崩溃。 请注意,如果使用此方法,则在每个@Test之前执行@Before时,只应在整个类中涵盖此方案。 简单表示结构:

(测试类)

@BeforeClass(创建新的app实例并调用webDriver实例)

@Before(在每个@Test之前执行,调用CrashApplication作为真正的@Test的前提条件)

@Test(将通过使用相同的会话执行并导航到登录屏幕)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM