我想启动Chrome网络浏览器作为访问特定网站的过程,然后等待它关闭。
一种特殊情况是浏览器可能已经打开并正在运行,因为用户可能已经访问过某些网站。
在这种情况下,浏览器可能会在现有窗口中打开一个新选项卡,并且新启动的过程将立即终止。这不应该使我的等待过程感到困惑:要么,我想要一个新的浏览器窗口(如果可以通过命令行参数强制执行),然后等待直到将其关闭,或者保留现有的浏览器窗口,并等待所有选项卡出现从我的过程被关闭。
我认为这无关紧要,但是我的编程环境很重要Java,您可以假设我知道浏览器的路径。
Java
我可以获得其预期行为的唯一浏览器是Internet Explorer(叹气)。在这里,我基本上需要在temp文件夹中创建一个类似以下内容的新批处理脚本
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”),所以我希望避免每个浏览器都包含一个库。最后,我不能使用商业或封闭源代码库,但是如果没有更好的答案,我当然会接受任何可行的解决方案。我将接受类型“ 1”的第一个(相当不错的)有效答案。如果答案偏低,我将等几天再接受其中的最佳答案。
我在“ 启动Firefox和等待直到关闭”中对您的问题的回答也适用于此。但是,您需要在下面添加导入
import org.openqa.selenium.chrome.ChromeDriver;
并从中更改以下代码
driver = new FirefoxDriver();
至
System.setProperty("webdriver.chrome.driver", "chromedriver.exe"); driver = new ChromeDriver();
您还需要下载一个单独的chrome驱动程序文件(chromedriver.exe)。硒网站上提供了链接。您需要将文件复制到适当的文件夹中。