0

異なるブラウザー (Firefox、Chrome、および Safari) で同じテストを実行したい。これを行うために、テストでパラメーター化を使用しています。ブラウザがクロムの場合、クロムを実行するなど。

そして、testng.xmlテストを並行して実行するように指定し、いくつかの<test>タグの下で同じテストを繰り返しました。

実行するテストが非常に多い場合はどうなりますか。<test>タグに同じテストをコピーして貼り付けます。最適なソリューションが表示されません。

どうすればこれを修正できますか?

これが私が試したものです:

public class SameTestDifferentBrowsers {

WebDriver driver;

@BeforeMethod
@Parameters("browser")
public void openBroswer(String browser) {

    if (browser.equalsIgnoreCase("Chrome")) {
        System.out.println(System.getProperty("user.dir"));
        System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir")+"//lib//browsers//chromedriverMac");

        driver = new ChromeDriver();

    } else if (browser.equalsIgnoreCase("Firefox")) {
        driver = new FirefoxDriver();
    } else if (browser.equalsIgnoreCase("safari")) {
        System.setProperty("webdriver.safari.driver", System.getProperty("user.dir")+"//lib//browsers//SafariDriver.safariextz");
        driver = new SafariDriver();
    }
}

@AfterMethod
public void closeBrowser() {
    driver.quit();
}

@Test
public void login_TestCase() {
    driver.get("https://www.google.com");

}
}

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Parallel test suite" parallel="tests">
  <test name="Firefox Test">
  <parameter name="browser" value="browser"/>
    <classes>
      <class name="ParallelBrowser.SameTestDifferentBrowsers"/>
    </classes>
  </test>
  <test name="Chrome Test">
  <parameter name="browser" value="browser"/>
    <classes>
      <class name="ParallelBrowser.SameTestDifferentBrowsers"/>
    </classes>
  </test>
    <test name="Safari Test">
    <parameter name="browser" value="browser"/>
    <classes>
      <class name="ParallelBrowser.SameTestDifferentBrowsers"/>
    </classes>
  </test>
</suite>
4

2 に答える 2

0

3 つのブラウザーすべてに対してすべてのテストを実行したいことが確実な場合は、設計を少し変更することができます。

さまざまなテスト ケースに対して複数のテスト クラスを作成します。xml test tagsパラメータとして異なるテストクラス名を渡します。

@testクラス名をパラメーターとして受け入れるブラウザーごとに、パラメーター化されたテスト クラスに3 つのメソッドを記述します。これを使用Reflectionsすると、すべてのメソッドで適切なテスト メソッドを呼び出すことができます@test

于 2015-11-17T07:10:15.470 に答える
0

ここで 2 つのことを修正する必要があり、問題はまだ解決されていません。

最初: TestNG.xml ファイルを更新してブラウザ名を含めます。

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Parallel test suite" parallel="tests">
<test name="Firefox Test">
    <parameter name="browser" value="Firefox" />
    <classes>
        <class name="ParallelBrowser.SameTestDifferentBrowsers" />
    </classes>
</test>
<test name="Chrome Test">
    <parameter name="browser" value="Chrome" />
    <classes>
        <class name="ParallelBrowser.SameTestDifferentBrowsers" />
    </classes>
</test>
<test name="Safari Test">
    <parameter name="browser" value="safari" />
    <classes>
        <class name="ParallelBrowser.SameTestDifferentBrowsers" />
    </classes>
</test>

2 番目: Safari ブラウザー拡張機能をブラウザーにインストールして有効にする必要があり、パスに保持しないでください。

したがって、Javaコードファイルの次の行にコメントするだけです

//System.setProperty("webdriver.safari.driver",      
       //System.getProperty("user.dir") + "/lib/browsers/SafariDriver.safariextz");
于 2015-11-29T19:43:21.703 に答える