【问题标题】:my after method does not work everything seems normal to me but it is skipping. Any suggestion?我的 after 方法不起作用对我来说一切似乎都很正常,但它正在跳过。有什么建议吗?
【发布时间】:2021-04-30 18:33:31
【问题描述】:

我的 aftermethod 拒绝运行我不知道我做错了什么。 我尝试了几个代码,但我仍然收到 java.lang.NullPointerException 任何建议?

    System.setProperty("webdriver.chrome.driver","/Users/eshanmostafa/eclipse-workspace/TestNG/chrome_ios/chromedriver ");
    WebDriver driver = new ChromeDriver();  
    driver.manage().window().fullscreen();
    driver.manage().deleteAllCookies();
    driver.manage().timeouts().pageLoadTimeout(40,TimeUnit.SECONDS);
    driver.manage().timeouts().implicitlyWait(40,TimeUnit.SECONDS);
    driver.get("https://www.google.com");

    }
    


    
    

@Test
public void test() {

String title = driver.getTitle();
System.out.println(title);

}
    


@AfterMethod
public void closeBrowswer() {
    
    try{ Thread.sleep(5000);
        driver.quit();
       }catch (Exception e){
          System.out.println("Nothing to do with it");
          } }
}

【问题讨论】:

    标签: javascript java selenium-webdriver selenium-chromedriver browser-automation


    【解决方案1】:

    我不太确定您想要实现什么,因为您的示例看起来有点不完整。 根据我的猜测,我完成了一个有效的、简单的硒测试:

    import java.util.concurrent.TimeUnit;
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    
    public class MyTest {
    
        private WebDriver driver;
    
        @Before
        public void doBefore() {
            System.setProperty("webdriver.chrome.driver", "/opt/chromedriver/chromedriver");
            driver = new ChromeDriver();
            driver.manage().window().fullscreen();
            driver.manage().deleteAllCookies();
            driver.manage().timeouts().pageLoadTimeout(40, TimeUnit.SECONDS);
            driver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS);
            driver.get("https://www.google.com");
    
        }
    
        @Test
        public void test() {
    
            String title = driver.getTitle();
            System.out.println(title);
    
        }
    
        @After
        public void closeBrowswer() {
    
            try {
                Thread.sleep(5000);
                driver.quit();
            } catch (Exception e) {
                System.out.println("Nothing to do with it");
            }
        }
    }

    对此的一些说明:

    1. @AfterMethod 这不是 JUnit 的一部分,而是 TestNG 的注释。正如Is there a alternative of @AfterMethod in junit? 所示,@After 是 JUnit 中对应的方法

    2. 空指针异常 我想,你在代码中得到了 NullPointerException,因为你在一个块中分配了变量驱动程序——而不是作为类的成员变量。很难说,因为缺少块的开头,但是有一个右花括号,所以我假设它最初在一个块中。 代码块中的变量仅限于该块。然后,“After”方法中的变量 drive 是另一个变量 - 您的类的成员变量,并且可能没有为该变量分配值。所以你得到了一个 NPE。

    【讨论】:

      猜你喜欢
      • 2022-01-23
      • 1970-01-01
      • 2019-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多