我想启动Chrome网络浏览器作为访问特定网站的过程,然后等待它关闭。
特殊情况是浏览器可能已经打开并运行,因为用户可能已经访问过某个网站。
在这种情况下,浏览器可能会在现有窗口中打开一个新选项卡,新启动的进程将立即终止。这不应该混淆我的等待过程:要么,我想要一个新的浏览器窗口(如果可以某种方式强制执行,可能通过命令行参数)并等待关闭,或保持现有的浏览器窗口并等待所有选项卡结果从我的过程关闭。
我认为这没关系,但我的编程环境是Java
,您可以假设我知道浏览器的路径。
我可以获得预期行为的唯一浏览器是Internet Explorer(叹息)。在这里,我需要基本上在一个临时文件夹中创建一个类似
的新批处理脚本start /WAIT "" "C:\Program Files\Internet Explorer\iexplore.exe" -noframemerging http://www.test.com/
然后我运行批处理脚本而不是直接运行浏览器,并在等待完成后删除它。
使目标过程更清晰:
noframemerging
),可能会禁止此问题。用例是我有一个可以在本地或服务器上运行的Web应用程序。如果它在本地运行,它将启动Web服务器,然后打开浏览器以访问条目页面。关闭浏览器后,该Web应用程序也应该关闭。这对于Internet Explorer来说是可靠的,对于所有其他情况,用户必须关闭浏览器,然后明确地关闭Web应用程序。因此,如果我能够可靠地等待Chrome完成,这将使用户体验更好。
解决方案按以下顺序排列
任何独立于平台的答案(同时使用Windows和Linux)都优先于平台相关的答案。
原因:在理想情况下,我想知道究竟是做了什么,并将其包含在我自己的代码中。由于我想支持不同的浏览器(参见" PS"下面),我希望避免每个浏览器包含一个库。最后,我不能使用商业或闭源图书馆,但如果没有更好的答案出现,当然,我会尊重任何有效的解决方案。我将接受#34; 1"类型的第一个(相当不错的)工作答案。如果较低偏好的答案出现,我会等几天才接受其中最好的答案。
我将针对其他浏览器推出几个类似的问题。由于我认为浏览器在它们消化的命令行参数方面完全不同,启动线程和子进程的方式,我认为这是有道理的。
答案 0 :(得分:1)
我在Launch Firefox and Wait until it is Closed对您提问的回答也适用于此处。但是,您需要在
下面添加导入import org.openqa.selenium.chrome.ChromeDriver;
并从
更改以下代码driver = new FirefoxDriver();
到
System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
driver = new ChromeDriver();
您还需要下载单独的chrome驱动程序文件(chromedriver.exe)。硒网站提供了一个链接。您需要将文件复制到适当的文件夹中。