Question

Je suis confronté à un problème sur la paramétrisation d'une fonction de recherche, en fait je dois alimenter mon test avec différents mots clés:

Voici ma classe:

package Distributed;
import static org.junit.Assert.assertEquals;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import org.json.JSONException;
import org.openqa.selenium.By;
import org.openqa.selenium.Platform;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

public class TSKZ63700J {

WebDriver driver ;
String BaseURL , winURL , TestURL, androidURL ;
  String ApiURL = "http://frstmwarwebsrv.orsyptst.com:9000/duobject?     searchString=TSK(Z63700J)(000)(Z63700JU10)(000)&filtercheck=nameSWF&p.index=0&p.size=8";
jsonobject json;

String res;

/**
 * Initiate connection
 */
@BeforeTest


public void setup () throws MalformedURLException  

{
    TestURL = "http://frstmwarwebsrv.orsyptst.com:9000";
    BaseURL = "http://10.2.128.126";
    winURL = "http://10.2.128.120:5556/wd/hub";
    androidURL ="http://10.2.128.120:5555/wd/hub";

    DesiredCapabilities wincap = DesiredCapabilities.firefox();
    wincap.setBrowserName("firefox");
    wincap.setPlatform(Platform.WINDOWS);
    driver = new RemoteWebDriver ( new URL ( winURL ),  wincap) ;



}

@Test
  public void compareresults () throws IOException, JSONException {
            srch ("TSK(Z63700J)(000)(Z63700JU10)(000)");
            //assertEquals(jsonobject.getresults(ApiURL), "TSK(ZRM760J)(000)(ZRM760JU00)(000)");
            assertEquals(jsonobject.getresults(ApiURL), res);

  }

private void srch(String keyword)  {

    driver.get(TestURL);
      WebElement input1 = driver.findElement(By.xpath("html/body/div[1]/div/div[2]/div/form/input[1]"));
      input1.sendKeys("guest");
      WebElement input2 = driver.findElement(By.xpath("html/body/div[1]/div/div[2]/div/form/input[2]"));
      input2.sendKeys("guest");
      WebElement btn = driver.findElement(By.xpath("html/body/div[1]/div/div[2]/div/form/button"));
      btn.click();
      WebElement w1 = driver.findElement(By.xpath("html/body/header/nav/div[1]/form/div/input"));
      w1.sendKeys( "TSK(Z63700J)(000)(Z63700JU10)(000)");
      WebElement w2 = driver.findElement(By.xpath("(//button[@type='button'])[2]"));
      w2.click();
      WebDriverWait wait= new WebDriverWait(driver,10 );
      wait.until(ExpectedConditions.visibilityOfElementLocated(By.linkText("TSK(Z63700J)(000)(Z63700JU10)(000)")));
      WebElement result = driver.findElement(By.linkText("TSK(Z63700J)(000)(Z63700JU10)(000)"));
     // res = (result.toString()).substring(80,100);
      res =result.getText();



}

private void quitTest() {
    driver.quit();
}

  @AfterTest
public void aftertest ()

{
    quitTest();
}

  }

Ce que je voudrais faire, c'est:

Paramétrisez d'abord la fonction de recherche, je suppose que je dois le faire au niveau SendKeys à l'intérieur de la fonction de recherche, mais je ne sais pas comment le faire à l'aide de testng.

Deuxièmement, j'aimerais que ALSI para paramétrisez l'APIURL.

Merci en avance pour vos suggestions.

J'ai fait ce qui suit:

@Parameters({"keyword" , })
@Test
private void srch(String keyword )  {

    driver.get(TestURL);
      WebElement input1 =   driver.findElement(By.xpath("html/body/div[1]/div/div[2]/div/form/input[1]"));
      input1.sendKeys("guest");
      WebElement input2 = driver.findElement(By.xpath("html/body/div[1]/div/div[2]/div/form/input[2]"));
      input2.sendKeys("guest");
      WebElement btn = driver.findElement(By.xpath("html/body/div[1]/div/div[2]/div/form/button"));
      btn.click();
      WebElement w1 = driver.findElement(By.xpath("html/body/header/nav/div[1]/form/div/input"));
      w1.sendKeys(keyword);
      WebElement w2 = driver.findElement(By.xpath("(//button[@type='button'])[2]"));
      w2.click();



}

Puis a changé testng.xml:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<test name="Search">
    <parameter name="keyword" value="tsk" />
    <parameter name="keyword" value="40" />
    <parameter name="keyword" value="30" />
    <parameter name="keyword" value="A" />
    <parameter name="keyword" value="TSK(SAW" />
    <parameter name="keyword" value="TSK(TTA010ON3" />
    <parameter name="keyword" value="TSK(ARS090J)(000)(ARS090JN30)(000)" />
    <parameter name="keyword" value="TSK(Z63700J)(000)(Z63700JU10)(000)" />
    <parameter name="keyword" value="BAQ703J" />
    <parameter name="keyword" value="BAQ703" />
    <parameter name="keyword" value="CPE800J" />
    <parameter name="keyword" value="NOT700J" />
    <parameter name="keyword" value="ZWE010JU" />
    <parameter name="keyword" value="ANF010JU0" />
    <parameter name="keyword" value="TTA010ON3" />
    <parameter name="keyword" value="BEN700JU40" />
    <parameter name="keyword" value="NOT700JNA5" />
    <parameter name="keyword" value="31" />
    <parameter name="keyword" value="LBEN00733_GLOBAL" />
    <parameter name="keyword" value="LBEN00733" />
    <parameter name="keyword" value="TSK(ZTA010OU05)(000)" />
    <parameter name="keyword" value="CRM :" />
    <parameter name="keyword" value="TSK(CRM025JU50)(000)" />
    <parameter name="keyword" value="TSK(ARS090J)(000)(ARS090JN30)(000)" />
    <parameter name="keyword" value="TSK(Z63700J)(000)(Z63700JU10)(000)" />
    <parameter name="keyword" value="AFF720J" />
    <parameter name="keyword" value="SSCC depuis Gold" />
    <parameter name="keyword" value="CPE170JR10" />
    <parameter name="keyword" value="Uproc Dist: Detection R:\\sysapp\\data\\CPE\\CPE\\wrk\\SSCC_FPLP" />
    <parameter name="keyword" value="Trailer: contournement sur le pb de la TVA" />
    <parameter name="keyword" value="AA" />
    <parameter name="keyword" value="49" />
    <parameter name="keyword" value="Internal Activities" />
    <parameter name="keyword" value="().-_ @[]" />
    <parameter name="keyword" value="Integration ZCRMI120 01" />

    <classes>
        <class name="Distributed.Search" />
    </classes>
</test>







</suite>

Cependant, lorsque j'exécute, seul le dernier paramètre est pris en considération: l'intégration ZCRMI120 01

Merci zied

Était-ce utile?

La solution

La raison pour laquelle seule la dernière valeur arrive est que tous vos paramètres ont le nom comme mot clé. Ainsi, la dernière valeur de paramètre est la dernière qui est mise à jour pour le paramètre "mot-clé". Si vous souhaitez utiliser tous vos paramètres, vous devez les définir différemment. Dans votre cas, si vous essayez d'exécuter le même test avec différentes données, vous devez utiliser le DataProvider. Votre apiurl est un bon candidat pour un paramètre dans le testng.xml coz, c'est quelque chose qui serait constant sur plusieurs tests.

Autres conseils

Les paramètres de testng sont contrôlés par l'annotation que vous pouvez attacher aux méthodes.

Test.java

@Parameters({"test", "test1"})
public void myTest(String test, String test1) {
  driver.findElement(By.id("txtSearch")).sendKeys(test);
}

Suite.xml

<test name="My Test">
  <classes>
    <parameter name="test" value="searchTerm" />
    <parameter name="test1" value="some other value" />
    <class name="com.my.package.Test" />
  </classes>
</test>

Pour le rendre plus propre, vous pouvez utiliser un @dataprovider dans une classe distincte de votre test pour ensuite passer en tant que paramètres.

MyParameters.java

@DataProvider(name = "keywords")
    public static Object[][] ngKeywords() {
    return new Object[][] { { "tsk" }, { "40" }, { "30" }, { "etc" } };
}

Utilisez ensuite le DataProvider dans votre test:

@Test(dataProviderClass = MyParameters.class, dataProvider = "keywords")
private void srch(String keyword) {
    someTestStuff();
}

Cela vous permet de garder vos données et votre test séparé.

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