通过TestNG在不同的浏览器上运行硒测试

时间:2018-06-30 21:06:34

标签: java selenium selenium-webdriver testng

任何人都可以帮助我,因为我真的不明白:

那是我的TestNG文件:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="GRID SAMPLE TEST" parallel="tests" verbose="3" thread-count="2">
    <test name="GRID EXECUTION WITH  CHROME" parallel="classes" verbose="3" thread-count="2">
    <parameter name ="browserType" value="chrome"/>
        <classes>
            <class name ="Tests"/>
            <class name ="Tests2"/>
        </classes>
    </test>
    <test name="GRID EXECUTION WITH  FF" parallel="classes" verbose="3" thread-count="2">
    <parameter name ="browserType" value="firefox"/>
        <classes>
            <class name ="Tests"/>
            <class name ="Tests2"/>
        </classes>
    </test>
</suite>

那是我的setUp方法:

RegistrationPage rp;

    @BeforeClass
    @Parameters("browserType")
    public void setUp(String browserType) throws InterruptedException  {
        rp = new RegistrationPage();

        if (browserType.equalsIgnoreCase("firefox")) {
            Configuration.browser = "firefox";
        } else if (browserType.equalsIgnoreCase("chrome")){
            Configuration.browser = "chrome";
        }
        Configuration.baseUrl = "http://demoqa.com/registration/";

    }

我正在使用Selenide,它是Selenium的包装,但这不是重点。 关键是我希望对chrome(此处为2)和firefox(至此处)运行相同的测试。 当我在调试时运行它们时,一切正常,在FF上进行了2个测试,在CHROME上进行了另外2个测试。但是,当我在没有调试的情况下正常运行它们(右键单击xml并以testNG的身份运行)时,我的所有测试都仅在FF(4)或仅在CHROME(4)上完成!

谁能解释为什么?我在这里做错了吗?

2 个答案:

答案 0 :(得分:1)

当前失败的原因是-您尝试在使用XML时并行运行测试(与Debug模式相反,我认为该模式在单个线程中运行)。

两个测试(来自TestNG XML的test个元素)几乎同时执行,都设置了Configuration.browser字段,该字段定义为 static ,这意味着-仅其中一个实例存在,并在以后执行的任何线程中被覆盖。

可以通过依次执行测试或手动为每个线程创建一个单独的WebDriver实例(根据参数browserType)并使用WebDriverRunner.setWebDriver()而不是{{1 }}。

例如:

Configuration.browser

希望这会有所帮助。

答案 1 :(得分:0)

使用:

  

@BeforeTest

注释,然后它将使用您在testNG.xml的<test>标记中提到的其他浏览器