Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.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
SeleniumJava正在打开两个Firefox实例_Java_Selenium - Fatal编程技术网

SeleniumJava正在打开两个Firefox实例

SeleniumJava正在打开两个Firefox实例,java,selenium,Java,Selenium,我刚刚开始学习SeleniumJava。 我有这个测试代码,它基本上只是打开google.com页面,获取它的标题,并断言标题。我的问题是每次运行测试时,Firefox都会被调用两次。我已经搜索了可能的问题,尝试了一些修复方法。但对我来说什么都不管用。。已尝试将“@BeforeTest”更改为“@BeforeClass”和“@Before”,但仍然相同 firefox版本:55.0.3 selenium版本:3.5.3 壁虎河:0.19.0 这是我的密码: public class ATest

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

firefox版本:55.0.3

selenium版本:3.5.3

壁虎河: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);
    }


}

我没有在Java中使用Selenium,只在Ruby中使用。但我的猜测是,
@BeforeTest
指令使setBaseURL()在每次测试之前执行。这是您第一次打开浏览器。稍后在实际测试中,您要做的是再次运行setBaseURL(),这将打开第二个浏览器


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

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

下面是Javadoc对
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中的元重定向。如果元重定向“rest”一段时间,最好等到该超时结束,因为如果在测试执行期间基础页面发生更改,那么针对该接口的未来调用的结果将针对新加载的页面。WebDriver.Navigation.to(字符串)的同义词

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

供参考的链接

  • Java文档:

不要在
verifyHomePageTitle
内调用
setBaseUrl
。让测试框架调用这些方法。测试框架调用
setBaseURL
,然后调用
verifyHomePageTitle
。由于您在测试方法中调用了
asBaseURL
,因此它被调用了两次(一次由框架调用,一次由您调用)。在测试中,setBaseUrl方法被调用了两次,在测试之前和测试期间。当您完全删除@BeforeTest并再次运行它时会发生什么?非常感谢大家!。非常感谢您,先生!:)np,若它帮助你们解决了问题,那个就投票赞成吧:)非常感谢。。这就是为什么。
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);
    }
}