2

appium と selenium グリッドを使用して 2 つのデバイスで並列テストを実行しようとしていますが、何らかの理由で最初のノード サーバー (および最初のデバイス) でのみ実行されますが、2 番目のサーバーでは何も起こりません。

また、最初のサーバーをシャットダウンしてテストを実行すると、2 番目のサーバーでテストが実行されるため、サーバーに問題はありません。

parallel に設定するために指定する必要があるパラメーターはありますか?

助けてくれてありがとう !

ここに私のファイルがあります:

最初のサーバー json ファイル:

{
  "capabilities":
  [
    {
      "browserName": "SamsungS6",
      "deviceName": "04157df40862d02f",
      "version":"6.0.1",
      "maxInstances": 3,
      "platform":"ANDROID"
    }
  ],
  "configuration":
  {
    "cleanUpCycle":2000,
    "timeout":30000,
    "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
    "url":"http://localhost:4491/wd/hub",
    "host": "localhost",
    "port": 4491,
    "maxSession": 5,
    "register": true,
    "registerCycle": 5000,
    "hubPort": 4433,
    "hubHost": "localhost"
   }
}

2 番目のサーバーの json ファイル:

{
  "capabilities":
  [
    {
      "browserName": "OnePlusOne",
      "deviceName": "14b2b276",
      "version":"6.0.1",
      "maxInstances": 3,
      "platform":"ANDROID",
      "platformName":"ANDROID"
    }
  ],
  "configuration":
  {
    "cleanUpCycle":2000,
    "timeout":30000,
    "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
    "url":"http://localhost:4490/wd/hub",
    "host": "localhost",
    "port": 4490,
    "maxSession": 5,
    "register": true,
    "registerCycle": 5000,
    "hubPort": 4433,
    "hubHost": "localhost"
  }
}

セレン グリッドを実行します。

java -jar selenium-server.jar -role hub -port 4433 

最初のシナリオを実行

node.exe node_modules\appium\bin\appium.js --nodeconfig myfirstscenario.json -p 4490 -U 14b2b276 -bp 5490 --chromedriver-port 6490

2 番目のシナリオを実行する

node.exe node_modules\appium\bin\appium.js --nodeconfig mysecondscenario.json -p 4491 -U 04157df40862d02f -bp 5491 --chromedriver-port 6491

テスト

@BeforeTest(alwaysRun = true)
public void setUp(){

    try {
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "ANDROID");
        capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "");
        capabilities.setCapability(AndroidMobileCapabilityType.APP_PACKAGE, appPackage);
        capabilities.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY, appActivity);

        driver = new AndroidDriver(new URL("http://localhost:4433/wd/hub"), capabilities);
        new WebDriverWait(driver, 60);
    } catch (MalformedURLException e) {
        e.printStackTrace();
    }

}

@Test
public void test(){
    System.out.println("hello world");

    try {
        sleep(6000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}


@AfterTest(alwaysRun = true)
public void closeDriver(){
    driver.quit();
}
4

2 に答える 2

0

問題は、DesiredCapabilities で一意のものを提供したり、カスタム CapabilityMatcher を追加したりしていないためです。デフォルトでは、グリッドは browserName、バージョン、およびプラットフォームのみを使用して、テストがルーティングされるノードを決定します。

問題を解決する 1 つの方法を次に示します。「applicationName」という名前の新しいキーを nodeConfig.json に追加し、「OnePlusOne」と「SamsungS6」の値をそれぞれ設定します。次に、"applicationName" という名前の新しい機能をテストの目的の機能に追加し、それぞれ "OnePlusOne" と "SamsungS6" の値を設定します。この後、テストは正しいデバイスにルーティングされます。

詳細については、こちらのブログ投稿をご覧ください。

于 2016-05-29T03:00:14.267 に答える