您好我已经使用我当前的框架进行了设置,
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:请原谅我遵循的错误代码约定
答案 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:请原谅我使用您的错误代码约定:)