0

Selenium RC+SeleniumGrid+TestNG を使用した並列開始テストに問題があります。プロジェクトを実行している間、すべてのブラウザーが開きますが、テストは適切なブラウザーで 1 つずつ実行されます。私を手伝ってくれますか?

PS私の英語でごめんなさい...

ここに私のアーティファクトがあります:

fotttest.java:

package ololo;
import org.testng.AssertJUnit;
import com.thoughtworks.selenium.*;    
import org.testng.annotations.*;
//import org.testng.Assert.*;
//import java.util.regex.Pattern;    
public class fotttest {
public Selenium selenium;
    //@BeforeMethod
    @BeforeTest()
    public void setUp() throws Exception {
        selenium = new DefaultSelenium("localhost", 4444, "*firefox", "http://www.google.com.ua/");
        selenium.start();
    }

    @AfterTest()
    public void tearDown() {
    selenium.stop();
    }

    @Test(description="FottballUATest")
    public void TestOne() throws Exception {
        selenium.open("/");
        Thread.sleep(3000);
        selenium.type("id=gbqfq", "football.ua");
        selenium.click("id=gbqfb");
        for (int second = 0;; second++) {
            if (second >= 60) AssertJUnit.fail("timeout");
            try { if (selenium.isElementPresent("link=Football.ua - все о футболе")) break; } catch (Exception e) {}
            Thread.sleep(1000);
        }

        selenium.click("css=em");
        selenium.waitForPageToLoad("30000");
        for (int second = 0;; second++) {
            if (second >= 60) AssertJUnit.fail("timeout");
            try { if (selenium.isElementPresent("link=Лига чемпионов")) break; } catch (Exception e) {}
            Thread.sleep(1000);
        }

        selenium.click("link=Лига чемпионов");
        selenium.waitForPageToLoad("30000");
        for (int second = 0;; second++) {
            if (second >= 60) AssertJUnit.fail("timeout");
            try { if (selenium.isElementPresent("link=календарь игр")) break; } catch (Exception e) {}
            Thread.sleep(1000);
        }

        selenium.click("link=календарь игр");
        selenium.waitForPageToLoad("30000");
        selenium.select("id=ctl00_ctl17_ddlTeam", "label=Барселона");
        selenium.click("css=#ctl00_ctl17_ddlTeam > option[value=\"51\"]");
        selenium.waitForPageToLoad("30000");
        for (int second = 0;; second++) {
            if (second >= 60) AssertJUnit.fail("timeout");
            try { if (selenium.isElementPresent("xpath=(//a[contains(text(),'2')])[9]")) break; } catch (Exception e) {}
            Thread.sleep(1000);
        }

        selenium.click("xpath=(//a[contains(text(),'2')])[8]");
        selenium.waitForPageToLoad("30000");
        for (int second = 0;; second++) {
            if (second >= 60) AssertJUnit.fail("timeout");
            try { if (selenium.isTextPresent("Матч завершен! Челси проходит Барселону!")) break; } catch (Exception e) {}
            Thread.sleep(1000);
        }       
    }   
}

新しいテスト:

package ololo;

import org.testng.AssertJUnit;
import com.thoughtworks.selenium.*;

import org.testng.annotations.*;

public class NewTest {
public Selenium selenium;

@BeforeTest()
public void setUp() throws Exception {
    selenium = new DefaultSelenium("localhost", 4444, "*firefox", "http://www.google.com.ua/");
    selenium.start();
}

@AfterTest()
public void tearDown() {
selenium.stop();
}


    @Test (description="IsportTest") 
    public void TestTwo() throws Exception {
        selenium.open("/");
        selenium.type("id=gbqfq", "isport.ua");
        selenium.click("id=gbqfb");
        for (int second = 0;; second++) {
            if (second >= 60) AssertJUnit.fail("timeout");
            try { if (selenium.isElementPresent("css=em")) break; } catch (Exception e) {}
            Thread.sleep(1000);
        }

        selenium.click("css=em");
        selenium.waitForPageToLoad("30000");
        for (int second = 0;; second++) {
            if (second >= 60) AssertJUnit.fail("timeout");
            try { if (selenium.isElementPresent("link=БОКС+ММА")) break; } catch (Exception e) {}
            Thread.sleep(1000);
        }

        selenium.click("link=БОКС+ММА");
        selenium.waitForPageToLoad("30000");
        for (int second = 0;; second++) {
            if (second >= 60) AssertJUnit.fail("timeout");
            try { if (selenium.isElementPresent("link=Котто: \"Все это время Мейвезер был джентльменом\"")) break; } catch (Exception e) {}
            Thread.sleep(1000);
        }

        selenium.click("link=Котто: \"Все это время Мейвезер был джентльменом\"");
        selenium.waitForPageToLoad("30000");
    }

}

testng.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite thread-count="2" name="Suite" parallel="tests">
  <test name="Test" preserve-order="true">
    <classes>
      <class name="ololo.NewTest"/>
      <class name="ololo.fotttest"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->
4

1 に答える 1

1

parallel="tests" は、<test>タグが並行して実行されることを意味します。つまり、複数のテスト タグがある場合、それらは並行して実行されます。

<test name="Test1">
<classes>...
</test>
<test name="test2">
<classes>...
</test>

の場合、test1 と test2 は並行して実行されます。各テストケースを並行して実行する場合は、parallel="methods" を設定する必要があります。クラス レベルの並列処理についても同様に、クラスを使用します。

于 2012-05-07T08:25:36.217 に答える