selenium:如果用户关闭浏览器或webdriver会怎么样?如何检测浏览器是否已关闭?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium:如果用户关闭浏览器或webdriver会怎么样?如何检测浏览器是否已关闭?相关的知识,希望对你有一定的参考价值。
- 操作系统:窗口10
- 浏览器:Chrome webDriver
- 浏览器版本:Chrome 63.0.3239.10(64位)
- Selenium版本2.44
添加以下依赖:
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.44.0</version>
</dependency>
预期行为 -
我想检查驱动程序是否被用户直接关闭,如果没有浏览器则重启webdriver。
在Driver webdriver = new ChromeDriver()
代码之前,webdriver是null状态,
但是在Driver webdriver = new ChromeDriver()
代码完成后,即使用户关闭浏览器,webdriver也不会被破坏。
因此,在用户关闭浏览器后,与webdriver相关的所有代码都有错误::“无法访问异常”。
我想重启webdriver,如果浏览器被用户关闭,但我无法检测到这种情况。
driver!=null
代码无效,因为浏览器被用户关闭后驱动程序仍然存在if((driver.getWindowHandle().equals(""))
无法正常工作,因为Chrome无法访问异常,因为浏览器已被用户关闭
我想要做的是检查浏览器是否已经消失,因为用户?
您可以对驱动程序对象执行任何操作,如果它抛出UnreachableBrowserException,则与浏览器进行通信时会出现问题。
此异常的最常见原因是:
- RemoteWebDriver提供的服务器地址无效,因此无法建立连接。
- 浏览器已经在测试中死亡。
您可以调用以下方法来验证浏览器是否已关闭。
public boolean isBrowserClosed(WebDriver driver){
boolean isClosed=false;
try{
driver.getTitle();
}catch(UnreachableBrowserException ubex){
isClosed=true;
}
return isClosed;
}
让我逐一回答你的问题:
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
和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
关闭Web Browser
的用户将是一个医疗事故。Web Browser
关闭必须由Automation Script
处理。I want restart the webdriver
:你既不能连接到前面的WebDriver
实例,也不能连接到之前的Web Browser
实例。您必须重新初始化,如下所示:WebDriver driver = new ChromeDriver();
有关详细信息,请参阅讨论
How can I reconnect to the browser opened by webdriver with selenium?
。
以上是关于selenium:如果用户关闭浏览器或webdriver会怎么样?如何检测浏览器是否已关闭?的主要内容,如果未能解决你的问题,请参考以下文章
python3+selenium3遇到的问题:Exception ignored in: <bound method Service.__del__ of <selenium.webdri