I've got a problem with parallel starting tests, using Selenium RC+SeleniumGrid+TestNG. While I run the project, all browsers opens but tests runs in appropriate browser one by one. Could you help me, please?
P.S. Sorry for my english...
Here is my artifacts:
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);
}
}
}
NewTest:
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 -->
parallel="tests" would mean <test>
tags would run in parallel. i.e. if you have multiple test tags then they would run in parallel.
<test name="Test1">
<classes>...
</test>
<test name="test2">
<classes>...
</test>
, then test1 and test2 would run in parallel. If you want each testcase to run in parallel, you should set parallel="methods". And similarly for class level parallelism, use classes.