2017-03-03 9 views
0

私は2つのアンドロイドデバイスに接続されたウィンドウ7を持っていますが、Appを自動化するためにSeleniumとAppiumを使用していますが、両方のデバイスで同時にテストを実行することはできません。以下は、私がtestng.xmlの内容と一緒に使用しているコードです。私が間違っている場所を教えてください。以下のコードはうまく動作しますが、最初のデバイスにアプリケーションをインストールし、次に2番目のデバイスには、両方のデバイスに同時にアプリケーションをインストールすることができます。どんな助けもありがたい。TestNG Appium Seleniumでパラレルテストを実行しています

パッケージ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

JUnitではなくTestNGの 'Assert'を使用してください。 – juherr

答えて

1

変更parallel="tests"parallel="methods"にあなたがそのあなたの場合のように、並行してメソッドを実行する必要があるため。

また、並行して実行しているテストは、まったく100%同時に実行されることはありません。両方のデバイスで実行の間に若干の遅延があります。追加の手順をいくつか追加して完全なスクリプトを試してみてください。そうすれば、テストが同時に実行されていることを簡単に確認できます。

+0

Thanks Anish;今の場合、たとえば8つの@Testアノテーションを持っていて、1番目のAndroidデバイスで4個、2番目に4個を実行したい場合、この並列= "メソッド"は機能しますか? –

+0

@AnujShrivastav新しい質問は最初の質問を多く変更するので、新しい質問を開くべきです。 – juherr

関連する問題