繁体   English   中英

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

[英]Run selenium tests on different browsers via 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)上完成!

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

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

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

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

例如:

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

    Configuration.baseUrl = "http://demoqa.com/registration/";

    if (browserType.equalsIgnoreCase("firefox")) {
        WebDriverRunner.setWebDriver(new FirefoxDriver());
    } else if (browserType.equalsIgnoreCase("chrome")){
        WebDriverRunner.setWebDriver(new ChromeDriver());
    }

}

希望这可以帮助。

采用 :

@BeforeTest

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM