Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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
Java 如何关闭浏览器?_Java_Selenium_Cucumber_Hook_Qa - Fatal编程技术网

Java 如何关闭浏览器?

Java 如何关闭浏览器?,java,selenium,cucumber,hook,qa,Java,Selenium,Cucumber,Hook,Qa,,我正在学习编程,我有问题。我只想打开一个浏览器并关闭它,但是。。。 我的程序打开两个浏览器并关闭一个 黄瓜钩: 头等舱: 二等舱: 也许我不该这么做? 我尝试在类部件上共享该项目。问题#1:您将忽略Java风格约定,并使用以大写字母开头的名称声明方法和变量。这会导致以下问题: 这会导致其他可能帮助你的人干脆走开。Java专家不喜欢阅读其他人的“臭”代码 它会导致各种各样的概念错误。比如说, Close.CloseDriver(); 看起来像是对静态方法的调用。但事实并非如此。为什么这是一

,我正在学习编程,我有问题。我只想打开一个浏览器并关闭它,但是。。。 我的程序打开两个浏览器并关闭一个

黄瓜钩:

头等舱:

二等舱:

也许我不该这么做? 我尝试在类部件上共享该项目。

问题#1:您将忽略Java风格约定,并使用以大写字母开头的名称声明方法和变量。这会导致以下问题:

  • 这会导致其他可能帮助你的人干脆走开。Java专家不喜欢阅读其他人的“臭”代码

  • 它会导致各种各样的概念错误。比如说,

      Close.CloseDriver();
    
    看起来像是对静态方法的调用。但事实并非如此。为什么这是一个问题?如果你写的代码让人困惑,你会让人困惑。肯定是其他人,也可能是你自己

  • 您确实需要阅读/理解/遵循Java风格的约定。特别是如果您希望其他人阅读您的代码

    问题#2:在我看来,您似乎没有考虑过包装器对象的用途和生命周期;i、 e.
    Chrome
    控制器
    挂钩
    。在单元测试中抽象公共代码是很好的,如果您做得正确的话。但是如果你没有一个清晰的思维模型来描述你的抽象需要如何工作,你最好编写简单的重复代码


    现在谈谈实际问题。由于上述两个问题,我不确定我是否正确阅读了您的代码,但在我看来问题就在这里:

    @After
    public void TearDown() {
        Controller Close = new Controller();
        Close.CloseDriver();
    }
    
    好的,您正在关闭一个
    ChromeDriver
    。但是哪一个呢

    答:您正在关闭在上一条语句中实例化时创建的驱动程序。这是一个不同的
    ChromeDriver
    实例,与通过
    Initialize
    方法设置的实例不同

    解决方案:我的建议是扔掉这些代码,重新开始:

    • 决定每个类的用途,每个方法应该做什么,以及如何使用它们。我强烈怀疑你实际上只需要一门课

    • 严格遵守标准Java标识符约定


    花些时间阅读您正在使用的IDE上的文档,并逐步浏览代码。这将显示浏览器的确切启动位置。能够调试是作为开发人员/自动机所需的一项关键技能。我创建了一个新对象,而不是将其分配给变量。我用一个类(目前)和静态方法解决了我的问题,我写的方法名称是从一个小写字母开始的。希望这条信息能传达给所有正在成长的开发者。
    public class Controller {
    
    Chrome Chrome = new Chrome();
    public WebDriver driver = Chrome.StartChrome();
    
    public void CloseDriver() {
        try {
            driver.quit();
        } catch (Exception e) {
            System.out.println(":: WebDriver stop error");
        }
        driver = null;
        System.out.println(":: WebDriver stopped");
    
    }
    
      Close.CloseDriver();
    
    @After
    public void TearDown() {
        Controller Close = new Controller();
        Close.CloseDriver();
    }