-1

有人可以解释我为什么在@节中的方法在测试后没有关闭浏览器?为什么我不能通过webdriver关闭浏览器?

package TestCases; 

import junit.framework.Assert; 
import org.junit.After; 
import org.junit.Before; 
import org.junit.Test; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.ie.InternetExplorerDriver; 

public class ScriptCase { 

    private WebDriver driver; 

    @Before 
    public void startWeb() { 
     WebDriver driver = new InternetExplorerDriver(); 

     driver.navigate().to("https://play.google.com/store/apps/details?id=com.recursify.pixstack.free&hl=en"); 
    } 

    @After 
    public void ShutdownWeb() { 
     driver.close(); 
    } 

    @Test 
    public void startWebDriver(){ 

     Assert.assertTrue("Title is different from expected", 
       driver.getTitle().startsWith("PixStack Photo Editor Free")); 

    } 
} 

当我从@After直接移动代码@Test(到最后)我的项目成功关闭浏览器。项目编译好。

+0

试试这个代替'driver.browser.close' –

+0

2马丁拉尔森: 我已经得到了提示:无法解析符号 '浏览器' – Vyacheslav

+0

驱动程序。 quit()关闭所有webdriver实例 –

回答

0

而不是使用@之前你可以试试...

 @BeforeClass 
    baseUrl = "http://localhost:8080/"; 
    driver = new FirefoxDriver(); 
    driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); 
    driver.get(baseUrl); 

and @AfterClass 
    driver.quit(); 

因此,尝试使用这个工作对我来说。

+0

Grate,它解决了我的问题! – Vyacheslav

1

在您的示例代码中,您有两个不同的driver变量。其中一个是startWeb方法的本地方法,用于创建浏览器实例。另一个变量处于类级别,并且从不实例化。这是您尝试在您的ShutdownWeb方法中使用的实例。要解决此问题,请不要在您的设置方法中重新声明本地driver变量。即:

public class ScriptCase { 

    private WebDriver driver; 

    @Before 
    public void startWeb() { 
    // This is the line of code that has changed. By removing 
    // the type "WebDriver", the statement changes from declaring 
    // a new local-scope variable to use of the already declared 
    // class scope variable of the same name. 
    driver = new InternetExplorerDriver(); 
    driver.navigate().to("https://play.google.com/store/apps/details?id=com.recursify.pixstack.free&hl=en"); 
    } 

    @After 
    public void shutdownWeb() { 
    driver.quit(); 
    } 

    @Test 
    public void startWebDriver(){ 

    Assert.assertTrue("Title is different from expected", driver.getTitle().startsWith("PixStack Photo Editor Free")); 

    } 
} 

此外,建议使用quit方法,而不是close是声音,我已经包含在上面我的代码变化。

+0

谢谢你,你是对的!我声明了变量两次。 – Vyacheslav

0
public class ScriptCase { 

    private WebDriver driver; 

    @BeforeClass 
    public void startWeb() { 
     driver = new InternetExplorerDriver(); 
     driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); 
     driver.navigate().to("https://play.google.com/store/apps/details?id=com.recursify.pixstack.free&hl=en"); 
    } 

    @AfterClass 
    public void ShutdownWeb() { 
     driver.close(); 
     driver.quit(); 
    } 

    @Test 
    public void startWebDriver(){ 

     Assert.assertTrue("Title is different from expected", 
       driver.getTitle().startsWith("PixStack Photo Editor Free")); 

    } 
} 

试试这个.....它的工作原理

相关问题