كيف يمكنني معلمة اختبارات البحث الخاصة بي باستخدام testng والسيلينيوم

StackOverflow https://stackoverflow.com/questions/19838968

سؤال

أنا أواجه مشكلة في Parametring وظيفة بحث ، في الواقع أحتاج إلى إطعام اختباري بكلمات رئيسية مختلفة:

ها هو صفي:

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

  }

ما أود فعله هو:

أولاً ، قم بتصوير وظيفة البحث ، أعتقد أنه يتعين علي القيام بذلك على مستوى SendKeys داخل وظيفة البحث ، لكنني لست متأكدًا من كيفية القيام بذلك باستخدام TestNg.

ثانياً ، أرغب في الحصول على apiurl.

شكرا مقدما لمقترحاتكم.

لقد فعلت ما يلي:

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



}

ثم غيرت 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>

ومع ذلك ، عندما أقوم بتشغيل المعلمة الأخيرة فقط يتم أخذها في الاعتبار: التكامل ZCRMI120 01

شكرا زييد

هل كانت مفيدة؟

المحلول

السبب وراء قدوم القيمة الأخيرة هو أن كل معلماتك لها اسم ككلمة رئيسية. وبالتالي فإن قيمة المعلمة الأخيرة هي الأخيرة التي يتم تحديثها للمعلمة "الكلمة الرئيسية". إذا كنت ترغب في استخدام جميع المعلمات الخاصة بك ، فأنت بحاجة إلى تحديدها بشكل مختلف. في حالتك ، إذا كنت تحاول إجراء نفس الاختبار ببيانات مختلفة ، فيجب عليك استخدام DataProvider. Apiurl الخاص بك هو مرشح جيد للمعلمة في testng.xml coz ، وهذا شيء سيكون ثابتا عبر اختبارات متعددة.

نصائح أخرى

يتم التحكم في معلمات TestNG من خلال التعليق التوضيحي الذي يمكنك إرفاقه بالطرق.

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>

لجعله أكثر نظافة ، يمكنك استخدام dataprovider في فئة منفصلة من الاختبار الخاص بك لتمرير كمعلمات.

myparameters.java

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

ثم استخدم DataProvider في الاختبار الخاص بك:

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

يتيح لك ذلك الحفاظ على بياناتك واختبارك منفصلين.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top