Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用testng将多个测试数据发送到以下位置_Java_Selenium_Selenium Webdriver_Testng_Selenium Grid - Fatal编程技术网

Java 如何使用testng将多个测试数据发送到以下位置

Java 如何使用testng将多个测试数据发送到以下位置,java,selenium,selenium-webdriver,testng,selenium-grid,Java,Selenium,Selenium Webdriver,Testng,Selenium Grid,请建议我如何在3个浏览器中为该字段发送3个用户 driver.findElement(By.id(PropertiesConfiguration.getMyProperty("PinTextfield"))).sendKeys(PropertiesConfiguration.getMyProperty("user")); // main class public class TestHRWW {`main class` protected WebDriver driver; @Para

请建议我如何在3个浏览器中为该字段发送3个用户

driver.findElement(By.id(PropertiesConfiguration.getMyProperty("PinTextfield"))).sendKeys(PropertiesConfiguration.getMyProperty("user")); 

// main class

public  class TestHRWW {`main class`

protected WebDriver driver;
@Parameters("browser")`parameter for browser initialization`
@BeforeClass
public  void setup(String browser) {
    if (browser.equalsIgnoreCase("firefox")) {
        driver = new FirefoxDriver();
    } else if (browser.equalsIgnoreCase("iexplorer")) {
        System.setProperty("webdriver.ie.driver","Drivers\\IEDriverServer.exe");
        driver = new InternetExplorerDriver();
    } else if (browser.equalsIgnoreCase("chrome")) {
        System.setProperty("webdriver.chrome.driver","Drivers\\chromedriver.exe");
        driver = new ChromeDriver();
    }
    else {
        throw new IllegalArgumentException("The Browser Type is Undefined");
    }
    driver.manage().window().maximize();
}

@BeforeMethod
public void open() {
    driver.get("http://www.myhrasiapacific.com/");
}
@AfterClass
public void teardown() {
    try {
        driver.quit();
    } catch (Exception e) {
        driver = null;
    }

}

// sub class
public class Login extends TestHRWW {`sub class`
    String x;
    static Logger logger = Logger.getLogger(Login.class.getName());
@Test   
    public void ClickLogon(WebDriver driver) throws InterruptedException, IOException {
        driver.findElement(`enter code here`
                By.id(PropertiesConfiguration.getMyProperty("logonbutton")))
                .click();
        Thread.sleep(2000);
       // here i need to sent 3 differt users credentials
        driver.findElement(
                By.id(PropertiesConfiguration.getMyProperty("PinTextfield")))
                .sendKeys(PropertiesConfiguration.getMyProperty("user"));
        Thread.sleep(2000);
        driver.findElement(
                By.id(PropertiesConfiguration
                        .getMyProperty("passwordTextfield"))).sendKeys(
                                PropertiesConfiguration.getMyProperty("password"));
        Thread.sleep(2000);
        driver.findElement(
                By.id(PropertiesConfiguration.getMyProperty("loginbutton")))
                .click();
        driver.manage().timeouts().implicitlyWait(120, TimeUnit.SECONDS);

    }

}

您应使用TestNG@DataProvider传递用户名和密码

您的登录方法如下

@Test(dataProvider="dataForLogin")
public void ClickLogon(String userName,String password) {
}

@DataProvider(name="dataForLogin")
public static Object[][] prepareDataForLogin(){
        // preparation of login data
}

如果您使用的是QAF,那么就不需要手动解析json数据并从数据提供程序类中删除

public class tDataHelper {
    private static List<String> studentsToCreate = new ArrayList<String>();

    static void parseData() throws Exception {
        studentsToCreate.add("user1");
        studentsToCreate.add("user2");
        studentsToCreate.add("user3");
    }

    @DataProvider
    public static Object[][] createStudents() {
        Object[][] objArray = new Object[studentsToCreate.size()][];
        for (int i = 0; i < studentsToCreate.size(); i++) {
            objArray[i] = new Object[1];
            objArray[i][0] = studentsToCreate.get(i);
        }
        return objArray;
    }
}

public class testStudents {
    private static tDataHelper helper = new tDataHelper();

    @BeforeClass
    public void setup() throws Exception {
        tDataHelper.parseData();
    }
    @Test(dataProvider = "createStudents", dataProviderClass = tDataHelper.class)
    public void testCreateStudents(String studentsToCreate) {
        System.out.println(studentsToCreate);
    }
}
公共类tDataHelper{
私有静态列表studentsToCreate=newarraylist();
静态void parseData()引发异常{
studentsToCreate.add(“user1”);
studentsToCreate.add(“user2”);
studentsToCreate.add(“user3”);
}
@数据提供者
公共静态对象[][]createStudents(){
Object[]objArray=新对象[studentsToCreate.size();
对于(int i=0;i

你能详细描述一下上面的场景吗这里我正在从属性文件传递数据,比如user1=abc,user2=xyz。我想使用@parameters注释更改数据。这对我有用吗。在dataprovider方法中,你可以读取任何文件并生成输入数据。请参阅此处的示例以从excel读取您可以将其更改为从属性文件读取如何将user1发送到firefox,将user2发送到chrome,将user3发送到IE。Is@dataproviders将适用于此。你有什么想法吗?你需要根据你的浏览器编写自定义逻辑