一步一步的過程

使用 GRID 與 Appium 進行並行測試:我將描述對我有用的方法。使用 Appium 建立 Selenium Grid

  1. 設定 selenium 網格在本地檔案系統上下載 selenium 獨立伺服器 jar 開啟終端並導航到放置 jar 檔案的目錄並執行以下命令:
java -jar selenium-server-standalone-2.53.3.jar -role hub
Open http://localhost:4444/grid/console and you should be able to see GRID console in your browser.
  1. 設定 Appium 節點在這裡你必須建立 json 檔案。假設你要在兩個裝置上執行,然後建立兩個不同的 json 檔案。這是一個 json 檔案,我有:{capabilities:[{applicationNameONEPLUS A3003browserNameONEPLUS A3003platformNameANDROIDmaxInstances:1}] ,configuration:{cleanUpCycle:2000,timeout:30000,proxy:“org.openqa.grid.selenium.proxy.DefaultRemoteProxy”,host:“127.0.0.1”,port: 4723,maxSession:1,register:true,registerCycle:5000,hubPort:4444,hubHost:“你的 ip 地址”}}將上述檔案儲存為 jasonFile1。

appium –nodeconfig C:/richa/jasonfile1.json -p 4723 -bp 4724 -U xxxx

i)注意你需要提供 json 檔案的絕對 pasth 位於 ii)埠為 4723 iii)Bootstrap 埠為 4724 iv)-U 例如我給出的為 xxxx

你可以找到裝置 ID 為 - >你的手機 - >設定 - >狀態 - >序列號你也可以執行 adb device 並檢查此裝置 ID。

然後它將使用一個裝置建立 Selenium Grid。

現在再次執行第二個 json 檔案,你將獲得 appium 啟動這是第二個 json 檔案:

{capabilities:[{applicationNameLenovo K50a40browserNameLenovo K50a40platformNameANDROIDmaxInstances:1}],configuration:{cleanUpCycle: 2000,超時:30000,代理:“org.openqa.grid.selenium.proxy.DefaultRemoteProxy”,主機:“127.0.0.1”,:4730,maxSession:1,“註冊“:true,”registerCycle“:5000,”hubPort“:4444,”hubHost“:”你的 ip 地址“}}將上述檔案儲存為 jasonFile2.json

使用 Lenovo Mobile 啟動第二個節點。appium –nodeconfig C:/ richa / jasonFile2.json -p 4730 -bp 4731 -U xxxx

Selenium Grid 看起來像這樣

3)建立 TestNG 並行執行方法來執行測試。

- >請注意裝置名稱的值將是你之前提供的 udid。你可以通過在命令提示符下執行 adb 裝置來獲取它。

現在建立 SearchHotelTestCase.Java,如下所示:package com.trivago.TestCases;

import java.net.MalformedURLException; import java.net.URL; import java.util.concurrent.TimeUnit;

import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.RemoteWebDriver; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Parameters; import org.testng.annotations.Test;

import com.trivago.pages.LocaleSelectionPage; import com.trivago.pages.SearchLocation; import com.trivago.pages.SplashScreenPage;

import io.appium.java_client.MobileElement; import io.appium.java_client.android.AndroidDriver;

公共類 SearchHotelTestCase {private AndroidDriver driver;

@Parameters({“deviceName _”,“platformVersion _”,“applicationName_”})@BeforeMethod public void beforeMethod(String deviceName_,String platformVersion_,String applicationName_)丟擲 MalformedURLException,InterruptedException {

DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(deviceName,deviceName_); capabilities.setCapability(platformVersion,platformVersion_); capabilities.setCapability(platformNameAndroid); capabilities.setCapability(applicationName,applicationName_); capabilities.setCapability(app,“/ Users /richa.b.shrivastava / Download / com.trivago_2017-04-28.apk”); capabilities.setCapability(appPackage,“com.trivago”); capabilities.setCapability(appActivity,“com.trivago.activities.SplashActivity”);

URL url = new URL(“ http://0.0.0.0:4723/wd/hub/ ”); System.out.println(“在 webdriver 之前”); driver = new AndroidDriver(url, capabilities); System.out.println(“在 webdriver 之後”); driver.manage()。timeouts()。implicitlyWait(10,TimeUnit.SECONDS); 了 Thread.sleep(4000); }

@Test public void SearchHotel(){//建立頁面類 LocaleSelectionPage 的物件 localeSelectionPage = new LocaleSelectionPage(driver); SplashScreenPage splashScreenPage =新的 SplashScreenPage(驅動程式); SearchLocation searchLocation = new SearchLocation(driver);

//呼叫頁面類的方法 localeSelectionPage.selectLocale(); splashScreenPage.clickSplashSearchText(); searchLocation.inputSearchText( 巴黎); searchLocation.selectSuggestions(“艾菲爾鐵塔,巴黎”);

}

}