操作系统:Window 10
浏览器:Chrome webDriver
浏览器版本:Chrome 63.0.3239.10(64位)
- Selenium Version 2.44
添加了以下依赖项:
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.44.0</version>
</dependency>
预期行为 -
我想检查用户是否直接关闭了驱动程序,如果没有浏览器则重启webdriver。
在Driver webdriver = new ChromeDriver()
代码之前,webdriver为空状态,
但在Driver webdriver = new ChromeDriver()
代码完成后,即使用户关闭浏览器,webdriver也不会被破坏。
因此,在用户关闭浏览器后,与webdriver相关的所有代码都有错误::“无法访问异常”。
如果浏览器被用户关闭,我想重启webdriver,但我无法检测到这种情况。
driver!=null
代码无效,因为在用户关闭浏览器后驱动程序仍然存在if((driver.getWindowHandle().equals(""))
无效,因为Chrome无法访问异常,因为浏览器已被用户关闭我想要做的是检查浏览器是否已经消失,因为用户?
答案 0 :(得分:4)
你可以对驱动程序对象执行任何操作,如果它抛出UnreachableBrowserException,那么与浏览器通信就会出现问题。
此异常的最常见原因是:
您可以调用以下方法来验证浏览器是否已关闭。
public boolean isBrowserClosed(WebDriver driver){
boolean isClosed=false;
try{
driver.getTitle();
}catch(UnreachableBrowserException ubex){
isClosed=true;
}
return isClosed;
}
答案 1 :(得分:0)
让我逐一回答你的问题:
What if user close the browser or webdriver
:首先 Automated Test Execution
不应由 Manual Intervention
拦截。它反对所有 Best Practices
。如果您强行关闭 Web Browser
,则 WebDriver
会抛出 org.openqa.selenium.WebDriverException
,如下所示:
Exception in thread "main" org.openqa.selenium.WebDriverException: Process unexpectedly closed with status: 0
Build info: version: '3.8.1', revision: '6e95a6684b', time: '2017-12-01T19:05:32.194Z'
System info: host: 'foo', ip: 'foo', os.name: 'foo', os.arch: 'foo', os.version: 'foo', java.version: 'foo'
Driver info: driver.version: FirefoxDriver
remote stacktrace: stack backtrace:
0: 0x47e934 - <no info>
1: 0x47f0a3 - <no info>
2: 0x442649 - <no info>
3: 0x449cc3 - <no info>
4: 0x42a890 - <no info>
5: 0x406f5e - <no info>
6: 0x40cfc9 - <no info>
7: 0x6bef19 - <no info>
8: 0x420756 - <no info>
9: 0x6b96e0 - <no info>
10: 0x7fa0fb01842 - BaseThreadInitThunk
How can I detect if the browser is closed?
:如果 Automation Script
处理正确的 initiation
和 closure
< / strong> Web Browser
您无需明确验证是否 Browser is Closed
。交叉检查死 Web Browser
和 Web Browser
会话/家务将是一个纯粹的开销。因此,更好的做法是编写清洁代码
Restart the webdriver if there is no browser
:应由 Automation Script
通过 WebDriver
和 Web Browser
来处理初始化。User close the browser, webdriver is not destroyed
:当你 WebDriver
Web Browser
Automation Script
strong>关闭 Web Browser
的用户将是 Malpractice 。 Web Browser
关闭必须由 Automation Script
处理。 I want restart the webdriver
:您既不能连接到 WebDriver
的上一个实例,也不能连接到 Web Browser
<的上一个实例/ strong>即可。您必须按如下方式重新初始化:
WebDriver driver = new ChromeDriver();
有关详细信息,请参阅讨论
How can I reconnect to the browser opened by webdriver with selenium?
。