我有两个问题:
我已经构建了一个正常工作的selenium webdriver脚本,但他打开了一个新的Firefox实例。是否可以使用已经打开的Firefox?如果是的,怎么样?
我需要向网站发送信息,以保持我的会话处于活动状态。我想使用cookie并每10分钟发送一次请求。我不知道这是不是一个好主意...(我不能使用selenium authentification,因为该网站会生成一个包含银行网站数字的表格)
如果有人能给我一些支持......
答案 0 :(得分:3)
如果您正在使用Seleium2 / WebDriver,那么您可以通过调用new FirefoxDriver()
来创建启动浏览器实例,然后可以在多个测试中重复使用它。例如,如果您使用的是JUNIT,则可以在FirefoxDriver
中创建@BeforeClass
驱动程序并在@AfterClass
中退出。
<强> browserSessionReuse 强>
以下SO帖子将解释为什么会话可能会到期。它可能还取决于您编写测试用例的方式(可能是您在setUp()
方法中初始化它)。
Selenium in -browserSessionReuse mode launchs a new browser
注意:最好通过每次测试创建和关闭浏览器实例来隔离测试。
答案 1 :(得分:0)
如果您在测试用例中使用firefox webdriver打开了FireFox浏览器实例并且尚未关闭该实例,则可以将该实例与RemoteWebDriver一起使用。如果一个测试用例失败并且您想手动启动另一个测试用例,您甚至可以使用该实例。 使用此代码。
IWebDriver WebDriver = null;
try
{
System.Uri uri = new System.Uri("http://localhost:7055/hub");
WebDriver = new RemoteWebDriver(uri, DesiredCapabilities.Firefox());
Console.WriteLine("Executed on remote driver");
}
catch (Exception)
{
WebDriver = new FirefoxDriver(firefoxProfile);
Console.WriteLine("Executed on New FireFox driver");
}
请参阅此博客文章中的详细信息。 http://binaryclips.wordpress.com/2014/09/16/selenium-web-driver-in-c-how-to-continue-script-on-the-already-opened-browser-instance/