2017-03-03 94 views
0

我有連接到兩個Android設備的Windows 7,我使用Selenium和Appium自動化應用程序,但無法在兩個設備中同時運行測試。下面是我使用的代碼以及來自testng.xml的內容。讓我知道我錯在哪裏。下面的代碼運行良好,但它將應用程序安裝在第一個設備上,然後在第二個設備上,我想要實現的是在兩個設備上同時安裝應用程序。任何幫助讚賞。在TestNG Appium Selenium中運行並行測試

package 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 --> 

+0

你應該使用來自TestNG的'Assert',而不是JUnit – juherr

回答

1

變化parallel="tests"parallel="methods"因爲你必須並行執行的方法,因爲它在你的情況。

另外,並行運行測試不會完全是100%同時執行。兩種設備的執行之間會有一些滯後。嘗試一個完整的腳本,並附加幾個步驟。這樣我們可以很容易地確定測試是同時運行的。

+0

謝謝Anish;現在,例如,如果我有8個@Test ng註釋我想在第一個Android設備上執行4個並在第二個上執行4個,那麼這個parallel =「methods」將起作用嗎? –

+0

@AnujShrivastav你應該開一個新的問題,因爲這些新的輸入會改變最初的問題。 – juherr