Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何关闭SeleniumWebDriver代码而不在关闭时引发异常。JAVA_Java_Exception_Selenium_Selenium Webdriver - Fatal编程技术网

如何关闭SeleniumWebDriver代码而不在关闭时引发异常。JAVA

如何关闭SeleniumWebDriver代码而不在关闭时引发异常。JAVA,java,exception,selenium,selenium-webdriver,Java,Exception,Selenium,Selenium Webdriver,Mymain()函数包含多个子函数,分别测试多个功能/场景等。 在测试运行期间,可能会发现一些错误情况。 在每种情况下,都没有理由继续运行测试,因此我将发送一封报告电子邮件,并使用driver.close()关闭程序或驱动程序。退出()命令。 浏览器已关闭,但代码仍在尝试运行,因此以下子函数中的第一个命令仍在尝试执行以下操作:导航到某处、查找对象等,但由于浏览器已关闭,因此引发异常,如下所示: Exception in thread "main" org.openqa.selenium.remo

My
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语句。你真的需要了解和/或。不,我需要更多地了解异常,你可能会更愉快。你真的需要了解和/或。不,我需要更多地了解异常,你可能会更愉快