Selenium-Java正在打开两个Firefox

时间:2017-09-16 16:02:11

标签: java selenium

我刚开始学习selenium java。 我有这个测试代码,它只是基本打开google.com页面并获得它的标题,并断言标题。我的问题是每次运行测试时,Firefox都会被调用两次。我已经搜索了可能的问题,尝试了一些修复。但没有什么对我有用..尝试将“@BeforeTest”更改为“@BeforeClass”和“@Before”仍然相同。

firefox版本:55.0.3

硒版本:3.5.3

geckodriver:0.19.0

这是我的代码:

public class ATest {
    public String baseURL = "http://google.com";
    public WebDriver driver;

    @BeforeTest
    public void setBaseURL() {
        driver = new FirefoxDriver();
        driver.get(baseURL);
    }

    @Test
    public void verifyHomePageTitle() {
        setBaseURL();
        String expectedTitle = "Google";

        String actualTitle = driver.getTitle();
        Assert.assertEquals(actualTitle, expectedTitle);
    }


}

3 个答案:

答案 0 :(得分:0)

我还没有将Selenium与Java一起使用,只使用了Ruby。但我的猜测是@BeforeTest指令使 setBaseURL()在每次测试之前执行。所以在这里你有第一个打开的浏览器。稍后当您在实际测试中执行的操作是再次运行 setBaseURL()时,将打开第二个浏览器。

verifyHomePageTitle()中删除 setBaseURL(),或删除@BeforeTest

答案 1 :(得分:0)

@BeforeTest在测试之前执行,因此您需要从测试中删除setBaseURL()。无论如何它都会在它之前运行。

答案 2 :(得分:0)

get方法被调用两次,因此它会加载两次页面。通过调用@BeforeTest进入@TestsetBaseURL后的第二位。从setBaseURL移除@BeforeTest,在实际get方法中移动@Test方法,您应该没问题

以下是java doc关于get方法

的内容
void    get(java.lang.String url)
Load a new web page in the current browser window.
  

获取

     

void get(java.lang.String url)

     

在当前浏览器窗口中加载新网页。这是使用HTTP GET操作完成的,该方法将阻塞,直到加载完成。这将遵循服务器发出的重定向或返回的HTML中的元重定向。如果元重定向“休息”任何持续时间,最好等到此超时结束,因为如果在测试执行期间底层页面发生更改,将来对此接口的调用结果将是新的加载页。 WebDriver.Navigation.to(String)的同义词。

     

参数:url - 要加载的URL。最好使用完全限定的URL

public class ATest {
    public String baseURL = "http://google.com";
    public WebDriver driver;

    @BeforeTest
    public void setBaseURL() {
        driver = new FirefoxDriver();
    }

    @Test
    public void verifyHomePageTitle() {
        driver.get(baseURL);

        String expectedTitle = "Google";
        String actualTitle = driver.getTitle();
        Assert.assertEquals(actualTitle, expectedTitle);
    }
}

参考链接