Domanda

Ho seguito molte delle guide e messaggi del forum online, ma non ho avuto fortuna ottenere questo a lavorare all'interno TestNG. Si tratta di un test basato griglia di selenio, programmato in Eclipse. Abbiamo avuto difficoltà, in modo da utilizzare le librerie elencate nella suggestione di questo post sul forum: http: //clearspace.openqa. org / messaggio / 66867

Sto cercando di eseguire la suite di test nel plugin TestNG per Eclipse (org.testng.eclipse). provato anche eseguendo il vaso dalla linea di comando con la griglia selenio inutilmente.

Dal momento che non sono uno sviluppatore Java, ad essere onesti non sono del tutto sicuro che cosa cercare. Ho una certa familiarità con Java grazie all'ambiente di elaborazione, ma ho sorta di gettato in Java / Eclipse per questo compito e sono a un po 'di una perdita. In ogni caso, ogni aiuto è apprezzato e vi ringrazio in anticipo.

Ecco il mio codice:

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();
    }

} 

Il caso di test vero e proprio

    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");
 }
 }

e 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);
    }
}
È stato utile?

Soluzione

Così ho risolto questo facendo cadere la classe seleniumTestNGHelper e rielaborazione dei percorsi di classe attraverso il file di formiche. E 'necessario lavorare completamente la mia suite / testcases originali, ma ha funzionato bene all'interno di griglia.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top