【问题标题】:Shutting down Selenium without closing the browser, while cleaning up temporary files在不关闭浏览器的情况下关闭 Selenium,同时清理临时文件
【发布时间】:2014-09-02 15:26:47
【问题描述】:

我有一组使用 Selenium WebDriver 用 Ja​​va 编写的类,用于在许多不同的网站上自动执行各种任务,例如登录和获取数据。

有时我们需要自己访问该页面以查找某些内容,而手动登录的过程非常……嗯,无聊且浪费时间。

我想既然我们已经有了登录宏,为什么不让 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 的一个限制,抱歉,我没有办法让您以这种方式获得所需的结果。

标签: java selenium


【解决方案1】:

你的代码完成后,杀死可执行进程,然后在没有 driver.quit() 的情况下退出程序

    try{
    /*kill the process*/
        Runtime.getRuntime().exec("taskkill /im chromedriver.exe /f");
        Thread.sleep(10000);
    }catch(Exception e){
        e.printStackTrace();

    }
    /*Exit*/
    System.exit(0)

【讨论】:

    【解决方案2】:

    您可以在保持浏览器不变的情况下退出程序。假设您有一个控制台应用程序:

    WebDriver driver = new FirefoxDriver();
    driver.get("http://www.google.com");
    System.exit(0);
    

    【讨论】:

    • 但这不会关闭驱动程序资源 - geckodriver.exe 保持运行。每次运行此程序时,都会启动另一个 geckodriver.exe 进程。
    猜你喜欢
    • 1970-01-01
    • 2016-07-16
    • 2010-12-19
    • 2021-09-19
    • 2013-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多