Java Selenium WebDriver 在到达最后一行代码后关闭 Web 浏览器?

Java Selenium WebDriver closes the web browser after reaching the last line of code?

提问人:asn 提问时间:8/28/2023 最后编辑:paulsm4asn 更新时间:8/28/2023 访问量:43

问:

在不使用 driver.close() 的情况下,webdriver 会关闭 Selenium 4 中的浏览器窗口。 我希望浏览器保持打开状态,直到我说 driver.close()。

执行我的代码后,Selenium Webdriver 不应关闭浏览器。 在我调用 driver.close() 或 driver.quit() 之前,应该打开 Web 浏览器。 是否有任何选项可以使浏览器保持打开状态。 我正在将 Selenium 4 与 Java 17 一起使用。

import java.time.Duration;
import org.openqa.selenium.WebDriver;
import io.github.bonigarcia.wdm.WebDriverManager;

public class CloseBrowserTest_1
{
    static WebDriver driver = null;

    public static void main(String[] args) throws InterruptedException
    {
        driver = WebDriverManager.chromedriver().create();      
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));   
        driver.manage().deleteAllCookies();
        
        driver.get("https://www.google.com");
        System.out.println("Title : " + driver.getTitle());
        System.out.println("Current URL : " + driver.getCurrentUrl());
    }
}
java google-chrome selenium-webdriver firefox webdriver

评论

0赞 paulsm4 8/28/2023
问:您能否显示重现该问题的代码片段?
0赞 asn 8/28/2023
我已经添加了代码并更新了我的帖子。你可以参考我上面的帖子。

答:

1赞 Funky Monkey 8/28/2023 #1

有一些选项可以在最后一行代码之后保持浏览器打开状态。不知道你为什么要使用它,但希望这会有所帮助。

如果您正在等待某个元素或某些操作,则始终可以使用 . 这样,您的浏览器将保持打开状态,直到您正在等待的元素出现或超时到期(您定义自己的超时持续时间)。欲了解更多信息,请访问此链接waitwait

另一方面,我不推荐,您可以使用.它使驱动器保持打开状态,但处于睡眠状态。不过,不建议使用此方法。Thread.sleep

评论

0赞 paulsm4 8/28/2023
听起来 OP 有一个控制台模式的 Java 程序,当他的程序结束时,webdriver 会关闭。它应该;)建议:只需在 的末尾添加 \aSystem.in.read() 即可。因此,在用户按“ENTER”之前,程序不会退出。main()
0赞 asn 8/28/2023
根据您的建议,我使用 System.in.read() 作为 main() 中的最后一个语句。代码按我预期工作。谢谢。
0赞 djmonki 8/29/2023
@paulsm4请将此添加为问题的明确答案,供可能遇到的其他人使用
0赞 djmonki 8/29/2023
@asn 请接受答案,一旦 paulsm4 发布它