Question

Je l'ai suivi beaucoup des guides et des messages du forum en ligne, mais ne l'ai pas eu de chance d'obtenir ce à travailler à l'intérieur TestNG. Il est un test basé sur la grille de sélénium, programmée dans Eclipse. A eu du mal, donc utilisé les bibliothèques énumérées dans la suggestion de ce post forum: http: //clearspace.openqa. org / message / 66867

Je suis en train de lancer la suite dans le plug-in de test TestNG pour Eclipse (org.testng.eclipse). Aussi essayé de courir le pot de la ligne de commande par grille de sélénium en vain.

Depuis que je ne suis pas un développeur java, pour être honnête, je ne suis pas tout à fait sûr de ce qu'il faut chercher. J'ai une certaine familiarité avec Java grâce à l'environnement de traitement, mais je suis genre d'été mis en java / eclipse pour cette tâche et je suis à peu d'une perte. Quoi qu'il en soit, toute aide est appréciée et merci à l'avance.

Voici mon code:

suite.java:

    package seleniumRC;
//import com.thoughtworks.selenium.*;
//import junit.framework.*;
//import java.util.regex.Pattern; 

//import static org.testng.AssertJUnit.assertTrue;
 //import org.testng.annotations.AfterMethod;
//import org.testng.annotations.BeforeMethod;
//import org.testng.annotations.Parameters;
import org.testng.annotations.Test;


public class suite extends Testcase1 {

@Test(groups = {"example", "firefox", "default"}, description = "test1")
    public void user1() throws Throwable {   
     testCase1();
    }

@Test(groups = {"example", "firefox", "default"}, description = "test2")
    public void user2() throws Throwable {

     testCase1();
    }

} 

Le scénario de test

    package seleniumRC;

//import com.thoughtworks.selenium.*;
//import org.testng.annotations.*;
//import static org.testng.Assert.*;
//import com.thoughtworks.selenium.grid.demo.*;
//import junit.framework.*;
//import com.ibm.icu.*;
//import java.util.regex.Pattern; 

//import static org.testng.AssertJUnit.assertTrue;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Parameters;


public class Testcase1 extends SeleneseTestNgHelper {

 private static int $itter = 10;

 public static void main(String args[]) {
  //junit.textui.TestRunner.run(Suite());
 } 

//public static Test Suite() {
 // return new TestSuite(Testcase1.class);
 //}

// public void setUp() throws Exception {
//  setUp("http://localhost:8080/test", "*firefox");
 //}
 @BeforeMethod(groups = {"default", "example"}, alwaysRun = true)
     @Parameters({"seleniumHost", "seleniumPort", "browser", "webSite"})
     protected void startSession(String seleniumHost, int seleniumPort, String browser, String webSite) throws Exception {
         startSession(seleniumHost, seleniumPort, browser, webSite);
         selenium.setTimeout("120000");
     }

@AfterMethod(groups = {"default", "example"}, alwaysRun = true)
     protected void closeSession() throws Exception {
         closeSession();
     }


 public void testCase1() throws Exception {
  selenium.open("/login.action#login");
  selenium.type("userName", "foo");
  selenium.type("password", "bar");
  selenium.click("login");
  selenium.waitForPageToLoad("30000");
  selenium.click("link=test");
  Thread.sleep(4000);
  selenium.click("//tr[4]/td[1]/a");

  if(selenium.isElementPresent("//input[@id='nextButton']") != false){
  selenium.click("//div[2]/input");
  }
  Thread.sleep(2000);

  for(int i=0; i < $itter; i++) {
  if(selenium.isElementPresent("//label") != false){

    selenium.click("//label");
    selenium.click("submitButton");
    Thread.sleep(1500);
  }
  else{ Thread.sleep(1500);}
  }

   selenium.click("//body/div[2]/div[1]/div/a");
   Thread.sleep(1500);
   selenium.click("//a[contains(text(),'Finish Now')]");


  Thread.sleep(2000);
  selenium.click("link=View Results");
  Thread.sleep(30000);
  selenium.click("showAllImgCaption");
  Thread.sleep(12000);
  selenium.click("generateTimeButton");
  Thread.sleep(2000);
  selenium.click("link=Logout");
  selenium.waitForPageToLoad("15000");
 }
 }

et la classe SeleneseTestNGHelper

   package seleniumRC;

import java.lang.reflect.Method;
//import java.net.BindException;

import com.thoughtworks.selenium.*;

//import org.openqa.selenium.SeleniumTestEnvironment;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebDriverBackedSelenium;
//import org.openqa.selenium.environment.GlobalTestEnvironment;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Optional;
import org.testng.annotations.Parameters;

public class SeleneseTestNgHelper extends SeleneseTestCase
{
    private static Selenium staticSelenium;

    @BeforeTest
    @Override
    @Parameters({"selenium.url", "selenium.browser"})
    public void setUp(@Optional String url, @Optional String browserString) throws Exception {
        if (browserString == null) browserString = runtimeBrowserString();

        WebDriver driver = null;
        if (browserString.contains("firefox") || browserString.contains("chrome")) {
          System.setProperty("webdriver.firefox.development", "true");
          driver = new FirefoxDriver();
        } else if (browserString.contains("ie") || browserString.contains("hta")) {
          driver = new InternetExplorerDriver();
        } else {
          fail("Cannot determine which browser to load: " + browserString);
        }

        if (url == null)
          url = "http://localhost:4444/selenium-server";
        selenium = new WebDriverBackedSelenium(driver, url);

        staticSelenium = selenium;
    }

    @BeforeClass
    @Parameters({"selenium.restartSession"})
    public void getSelenium(@Optional("false") boolean restartSession) {
        selenium = staticSelenium;
        if (restartSession) {
            selenium.stop();
            selenium.start();
        }
    }

    @BeforeMethod
    public void setTestContext(Method method) {
        selenium.setContext(method.getDeclaringClass().getSimpleName() + "." + method.getName());

    }

    @AfterMethod
    @Override
    public void checkForVerificationErrors() {
        super.checkForVerificationErrors();
    }

    @AfterMethod(alwaysRun=true)
    public void selectDefaultWindow() {
        if (selenium != null) selenium.selectWindow("null");
    }

    @AfterTest(alwaysRun=true)
    @Override
    public void tearDown() throws Exception {
//        super.tearDown();
    }

    //@Override static method of super class (which assumes JUnit conventions)
    public static void assertEquals(Object actual, Object expected) {
        SeleneseTestBase.assertEquals(expected, actual);
    }

    //@Override static method of super class (which assumes JUnit conventions)
    public static void assertEquals(String actual, String expected) {
        SeleneseTestBase.assertEquals(expected, actual);
    }

    //@Override static method of super class (which assumes JUnit conventions)
    public static void assertEquals(String actual, String[] expected) {
        SeleneseTestBase.assertEquals(expected, actual);
    }

    //@Override static method of super class (which assumes JUnit conventions)
    public static void assertEquals(String[] actual, String[] expected) {
        SeleneseTestBase.assertEquals(expected, actual);
    }

    //@Override static method of super class (which assumes JUnit conventions)
    public static boolean seleniumEquals(Object actual, Object expected) {
        return SeleneseTestBase.seleniumEquals(expected, actual);
    }

    //@Override static method of super class (which assumes JUnit conventions)
    public static boolean seleniumEquals(String actual, String expected) {
        return SeleneseTestBase.seleniumEquals(expected, actual);
    }

    @Override
    public void verifyEquals(Object actual, Object expected) {
        super.verifyEquals(expected, actual);
    }

    @Override
    public void verifyEquals(String[] actual, String[] expected) {
        super.verifyEquals(expected, actual);
    }
}
Était-ce utile?

La solution

Je résolu ce problème en laissant tomber la classe seleniumTestNGHelper et en retravaillant les classpaths par du fichier fourmi. Il a fallu travailler complètement ma suite / testcases d'origine, mais a bien fonctionné dans les Grille.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top