0

我在使用 Selenium RC+SeleniumGrid+TestNG 进行并行启动测试时遇到问题。当我运行项目时,所有浏览器都会打开,但测试会在适当的浏览器中一一运行。请问你能帮帮我吗?

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 回答