Pergunta

Eu segui muitos dos guias e postagens do fórum on -line, mas não tive sorte em fazer isso funcionar dentro do teste. É um teste baseado em grade de selênio, programado no Eclipse. Tive problemas, usou as bibliotecas listadas na sugestão deste post do fórum: http://clearspace.openqa.org/message/66867

Estou tentando executar a suíte no plug -in de teste do Eclipse (org.testng.eclipse). Também tentei executar o frasco a partir da linha de comando através da grade de Selenium sem sucesso.

Como não sou desenvolvedor de Java, para ser sincero, não tenho muita certeza do que procurar. Tenho alguma familiaridade com o Java graças ao ambiente de processamento, mas eu meio que fui jogado no Java/Eclipse por esta tarefa e estou com um pouco de perda. De qualquer forma, qualquer ajuda é apreciada e agradece antecipadamente.

Aqui está o meu código:

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

} 

O caso de teste real

    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 a classe SeleneteTestnghelper

   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);
    }
}
Foi útil?

Solução

Então, resolvi isso descartando a classe SeleniumTestnghelper e reformulando os patches por meio do arquivo ANT. Exigiu trabalhar completamente minha suíte/testcases originais, mas funcionou bem na grade.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top