如何在WebDriver中切换实例

时间:2013-07-25 10:26:07

标签: java firefox selenium webdriver

您好我已经使用我当前的框架进行了设置,

ClassA
{
    //Which Receives Selenium WebDriver call the 'driver' object reference to manipulate the locators in UI

    public WebDriver get()
    {
        return MainClass.driver;
    }
}

MainClass
{
    public static Webdriver driver;
    method A()
    {
        //which uses Firefox instance and it is passed to ClassA to operate
    driver = new FirefoxDriver();
    }

    methodB()
    {
        //which creates new instance of Chrome
        driver = new ChromeDriver();
    }
}

我想要做的是,一旦我调用了methodB(),就会创建Chrome的实例但是一旦完成,我想恢复到在chrome运行之前可用或调用的firefox实例,但是我的方法是因为我是引用相同的webdriver对象,旧的firefox引用将被删除。

任何建议?

PS:请原谅我遵循的错误代码约定

2 个答案:

答案 0 :(得分:7)

最简单的解决方案是为FF和Chrome创建单独的对象。修改get方法以获取参数(browserType),然后返回correspoding对象。

为什么要切换浏览器?

答案 1 :(得分:0)

您可能希望看到针对您情况的不同方法。我相信如果你必须使用2个浏览器,你很可能会尝试将一些信息从一个传递到另一个。我就是这样看的:

    ClassA
    {
        //Which Receives Selenium WebDriver call the 'driver' object reference to manipulate the locators in UI

        public WebDriver get()
        {
            return MainClass.driver;
        }
    }

    MainClass
    {
        public static Webdriver currentBrowser, firefoxInstance chromeInstance;
        firefoxInstance = new FirefoxDriver();
        chromeInstance= new ChromeDriver();
        currentBrowser = firefoxInstance; //if you want start out with Firefox

        currentBrowser()
        {
            return currentBrowser; 
        }

        switchBrowser(Cookies passingInfo) //passingInfo could be like cookies but also just current page etc...
        {
            if(currentBrowser==firefoxInstance)
            {
                chromeInstance.cookies()=passingInfo; // this is definitely not the correct way of passing cookies in Selenium but you get my point
                currentBrowser=chromeInstance;

            }
            else
            {
                firefoxInstance.cookies()=passingInfo;
                currentBrowser=firefoxInstance;
            }
        }
    }

当然,有多种方法可以做到这一点,这取决于你最终目标是什么。但请记住,某些网站的设计方式不同,具体取决于连接到它们的浏览器的用户代理,这可能会导致代码崩溃(就像我刚刚在2分钟前体验过的那样。)如果可以的话,我建议坚持使用一个网络浏览器。

PS:请原谅我使用您的错误代码约定:)