簡體   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