如何关闭SeleniumWebDriver代码而不在关闭时引发异常。JAVA
My如何关闭SeleniumWebDriver代码而不在关闭时引发异常。JAVA,java,exception,selenium,selenium-webdriver,Java,Exception,Selenium,Selenium Webdriver,Mymain()函数包含多个子函数,分别测试多个功能/场景等。 在测试运行期间,可能会发现一些错误情况。 在每种情况下,都没有理由继续运行测试,因此我将发送一封报告电子邮件,并使用driver.close()关闭程序或驱动程序。退出()命令。 浏览器已关闭,但代码仍在尝试运行,因此以下子函数中的第一个命令仍在尝试执行以下操作:导航到某处、查找对象等,但由于浏览器已关闭,因此引发异常,如下所示: Exception in thread "main" org.openqa.selenium.remo
main()
函数包含多个子函数,分别测试多个功能/场景等。在测试运行期间,可能会发现一些错误情况。
在每种情况下,都没有理由继续运行测试,因此我将发送一封报告电子邮件,并使用
driver.close()关闭程序
或驱动程序。退出()代码>命令。
浏览器已关闭,但代码仍在尝试运行,因此以下子函数中的第一个命令仍在尝试执行以下操作:导航到某处、查找对象等,但由于浏览器已关闭,因此引发异常,如下所示:
Exception in thread "main" org.openqa.selenium.remote.UnreachableBrowserException: Error communicating with the remote browser. It may have died.
或
那么,我如何告诉我的程序停止运行并正确关闭/退出浏览器呢?将你的驱动程序.quit()放入try/catch块。将你的驱动程序.quit()放入try/catch块。使用try/finally而不是try/catch
您不想捕获异常,然后关闭驱动程序,您只想在测试结束时关闭驱动程序,不管它在哪里
示例测试方法可能如下所示:
public void exampleMethod() {
WebDriver driver = new FirefoxDriver();
try {
//Steps in your test
}
finally {
driver.quit();
}
}
使用try/finally而不是try/catch
您不想捕获异常,然后关闭驱动程序,您只想在测试结束时关闭驱动程序,不管它在哪里
示例测试方法可能如下所示:
public void exampleMethod() {
WebDriver driver = new FirefoxDriver();
try {
//Steps in your test
}
finally {
driver.quit();
}
}
异常不是由driver.quit()
命令本身引起的,而是由代码中试图使用浏览器的下一个命令引起的。您不认为代码不智能,因为您为什么试图引用已关闭的浏览器?这正是问题所在。我怎么能告诉我的代码不要再运行了?为什么不放一个sys.exit()或甚至一个return语句。异常不是由driver.quit()引起的
命令本身,但如果代码中的下一个命令试图使用浏览器,您是否认为该代码不明智,因为您为什么试图引用已关闭的浏览器?这正是问题所在。我怎样才能告诉我的代码不要再运行了?为什么不放一个sys.exit()或甚至一个return语句。你真的需要了解和/或。不,我需要更多地了解异常,你可能会更愉快。你真的需要了解和/或。不,我需要更多地了解异常,你可能会更愉快