【发布时间】:2014-09-02 15:26:47
【问题描述】:
我有一组使用 Selenium WebDriver 用 Java 编写的类,用于在许多不同的网站上自动执行各种任务,例如登录和获取数据。
有时我们需要自己访问该页面以查找某些内容,而手动登录的过程非常……嗯,无聊且浪费时间。
我想既然我们已经有了登录宏,为什么不让 selenium 处理它。
我想打开一个新的浏览器,做登录程序,然后关闭 selenium。然后,用户将继续他们想在网站上执行的任何任务。
我注意到,如果我没有正确关闭 Selenium,它会在临时文件夹中留下一个匿名配置文件。加班,在我意识到发生这种情况之前,我已经积累了大约一份演出的个人资料。原来是因为我没有使用 close 和 quit 正确关闭 selenium
但是,如果我使用这些方法,浏览器就会随之关闭。刚才我测试如下
WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");
driver.close() // shuts down the browser
然后我尝试了
WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");
driver.quit() // shuts down the browser
有没有办法让我在清理所有这些匿名配置文件的同时关闭 Selenium 而无需关闭浏览器?我基本上将它用作宏,除了我通过管理所有不同宏的 Java 应用程序以编程方式启动它。
【问题讨论】:
-
让我改一下你的问题:你想用新的 Selenium 测试连接到已经打开的浏览器窗口以避免登录,对吗?那么 Selenium 是不可能的,见code.google.com/p/selenium/issues/detail?id=18
-
@olyv 我想打开一个新浏览器,执行登录程序,然后关闭 selenium,因为它已经完成了它的工作。然后,用户将继续他们想在网站上执行的任何任务。
-
您应该在另一个选项卡中执行此操作,然后执行您的操作并关闭选项卡并继续: Set
winSet = webDriver.getWindowHandles(); List winList = new ArrayList (winSet);字符串 newTab = winList.get(winList.size() - 1); //webDriver.close(); // 关闭原来的标签 webDriver.switchTo().window(newTab); // 切换到新标签 -
@Csanesz 我打开了一个新窗口,然后在新窗口中执行了程序。然后我切换到旧窗口并关闭它。但是,selenium 仍在运行(只是在后台等待)。我告诉
quit(),然后它就关闭了所有浏览器。 -
Selenium 打开的“浏览器”是专用的驱动浏览器。如果您尝试关闭 Selenium,您将关闭驱动程序,因此也会关闭“浏览器”。这是 WebDriver 的一个限制,抱歉,我没有办法让您以这种方式获得所需的结果。