一步一步的过程

使用 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(“艾菲尔铁塔,巴黎”);

}

}