Selenium中没有Grid的多个WebDriver实例?

时间:2014-04-22 08:24:09

标签: java selenium junit selenium-webdriver selenium-grid

是否可以在本地使用多个硒网络驱动程序,而无需使用硒网格同时运行多个测试?

我通过调用new FireFoxDriver()创建多个实例,但窗口中的会话似乎互相干扰。

驱动程序由下面显示的JUnit-Methods创建和销毁。对于每个Test-class,都有一个WebDriver,但每个测试用例具有不同的执行持续时间。第一个Test-class完成后,调用此类的tearDownClass()。 抛出此异常:

  

org.openqa.selenium.remote.SessionNotFoundException:调用quit()后无法使用FirefoxDriver。   构建信息:版本:'2.39.0',修订版:'14fa800511cc5d66d426e08b0b2ab926c7ed7398',时间:'2013-12-16 13:18:38'   系统信息:主机:'T61',ip:'127.0.1.1',os.name:'Linux',os.arch:'i386',os.version:'3.11.0-15-generic',java.version :'1.7.0_51'

@BeforeClass
public static void setUpClass() {
    driver = new FireFoxDriver();
}

@AfterClass
public static void tearDownClass() {
    driver.quit(); // this should only kill the current driver
}

4 个答案:

答案 0 :(得分:1)

然后尝试为不同的实例使用不同的驱动程序变量:

例如:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class Testing 
{
    WebDriver driver1, driver2;
    @BeforeClass
    public void BeforeClass()
    {
        driver1 = new FirefoxDriver();
        driver2 = new FirefoxDriver();
    }
    @Test
    public void Test1() throws InterruptedException
    {
        driver1.get("http://www.google.com");
        driver2.get("http://gmail.com");

    }
    @org.testng.annotations.AfterClass
    public void AfterClass()
    {
        driver1.quit();
    }
}    

答案 1 :(得分:0)

尝试使用不同的日食.. 我的意思是,开始2次日食&在两次日食中运行相同的程序....

答案 2 :(得分:0)

您可以在没有完整Selenium Grid的情况下使用RemoteWebDriver。如果您在本地启动Selenium Standalone jar而不定义角色,那么它实际上是一个Grid和Node组合成一个。使用此本地Selenium Server实例,您可以同时运行多个浏览器。

通过RemoteWebDriver创建Firefox实例非常简单,并且在线

上有详细记录

答案 3 :(得分:-1)

默认selenium将在4444端口上运行。请创建您的实例,以便通过添加

使每个实例具有不同的端口
     -port <port id/number>