Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.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

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
Android 在TestNG Appium Selenium中运行并行测试_Android_Selenium_Selenium Webdriver_Testng_Appium Ios - Fatal编程技术网

Android 在TestNG Appium Selenium中运行并行测试

Android 在TestNG Appium Selenium中运行并行测试,android,selenium,selenium-webdriver,testng,appium-ios,Android,Selenium,Selenium Webdriver,Testng,Appium Ios,我有windows 7,它连接到两台android设备,我使用Selenium和Appium来自动化一个应用程序,但无法在这两台设备上同时运行测试。下面是我正在使用的代码以及testng.xml中的内容。让我知道我错在哪里。下面的代码运行正常,但它在第一台设备上安装应用程序,然后在第二台设备上安装。我想实现的是在两台设备上同时安装应用程序。谢谢你的帮助 软件包ca.automation.com import org.testng.annotations.Test; import com.rel

我有windows 7,它连接到两台android设备,我使用Selenium和Appium来自动化一个应用程序,但无法在这两台设备上同时运行测试。下面是我正在使用的代码以及testng.xml中的内容。让我知道我错在哪里。下面的代码运行正常,但它在第一台设备上安装应用程序,然后在第二台设备上安装。我想实现的是在两台设备上同时安装应用程序。谢谢你的帮助

软件包ca.automation.com

import org.testng.annotations.Test;

import com.relevantcodes.extentreports.ExtentReports;
import com.relevantcodes.extentreports.ExtentTest;
import com.relevantcodes.extentreports.LogStatus;

import io.appium.java_client.android.AndroidDriver;

import org.testng.annotations.BeforeSuite;
import org.testng.annotations.BeforeTest;

import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
import java.util.concurrent.TimeUnit;

import org.junit.Assert;
import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

public class StackOverflow {

    WebDriver driver1;
    WebDriver driver2;
//  ExtentReports report;
//  ExtentTest logger;
//  Boolean present;
    File app = new File("App\\app_US_IT_Ananta.apk");


    @BeforeSuite
    public void startReport(){
//      report=new ExtentReports("C:\\Anuj\\MobileAppResults.html");

    }

    @Test (priority =0)
    public void installapp() {
        //      logger=report.startTest("VerifyAppInstalltion");

        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability("udid", "1015fadb1a274005");
        //      capabilities.setCapability("udid", "ee92ba92");
        capabilities.setCapability("deviceName","Android Emulator");
        capabilities.setCapability("platformVersion", "4.4");
        capabilities.setCapability("autoAcceptAlerts", true);
        capabilities.setCapability("app", app.getAbsolutePath());
        try {
            driver1 = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
    }

    @Test (priority =0)
    public void installapp1() {
        DesiredCapabilities capabilities1 = new DesiredCapabilities();
        capabilities1.setCapability("udid", "ee92ba92");
        capabilities1.setCapability("deviceName","Android Emulator");
        capabilities1.setCapability("platformVersion", "4.4");
        capabilities1.setCapability("autoAcceptAlerts", true);
        capabilities1.setCapability("app", app.getAbsolutePath());
        try {
            driver2 = new AndroidDriver(new URL("http://127.0.0.1:4730/wd/hub"), capabilities1);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
    }

}
Testng.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="tests" thread-count="2">
  <test name="Test">
    <classes>
      <class name="ca.automation.com.StackOverflow"/>
    </classes>
  </test> <!-- Test -->

parallel=“tests”
更改为
parallel=“methods”
,因为您必须并行执行这些方法,就像您的情况一样


此外,并行运行测试不会完全是100%同时执行。在两个设备中执行之间会有一些延迟。尝试一个完整的脚本,只需几个额外的步骤。这样我们就可以很容易地确定测试是同时运行的。

谢谢Anish;现在举例来说,如果我有8个@Test ng注释,我想在第一台Android设备上执行4个,在第二台设备上执行4个,这个parallel=“methods”会起作用吗?@AnujShrivastav你应该打开一个新问题,因为这些新输入会大大改变最初的问题。你应该使用TestNG中的
断言
,而不是JUnit