目标:因为我是新来Appium的。我正在尝试在Ubuntu上使用Appium网格在多个android设备上并行自动化Appium测试
我成功启动了一个网格中心服务器和两个具有不同端口的节点
问题:无法同时在两台设备上运行测试用例(我确信问题出在我如何设计框架上)。我不知道如何传递两个设备的能力,同时启动设备(主要问题)。我必须为此使用多线程吗?如果是,那么如何使用
实际:当我在同一个设备上运行多个测试类时,它可以工作,但由于我的BaseTest类中只有一个Android驱动程序实例,我无法并行运行
我尝试了什么:我在谷歌上浏览了这么多线程,但无法找到确切的解决方案
这是我的测试。XML代码
<suite name="Functional" parallel="tests" thread-count="2">
<test verbose="2" name="Pixel 4a">
<classes>
<class name="tests.PersonalRegistrationTests" />
<class name="tests.LoginTests"></class>
</classes>
</test> <!-- Test -->
<test verbose="2" name="Galaxy A20s">
<classes>
<class name="tests.PersonalRegistrationTests" />
<class name="tests.LoginTests"></class>
</classes>
</test> <!-- Test -->
这是我的TestBase。java代码
public class TestBase {
static AppiumDriver androidDriver;
@BeforeSuite
public void setup() {
try {
androidDriver = DeviceUtility.getAndroidDriver();
} catch (Exception exp) {
System.out.println("Message is : " + exp.getMessage());
androidDriver.quit();
}
}
这是我的设备实用程序.java代码
public static AppiumDriver getAndroidDriver() throws Exception {
DesiredCapabilities capability = new DesiredCapabilities();
AppiumDriver androidDriver;
try {
capability.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
capability.setCapability(MobileCapabilityType.PLATFORM_VERSION, "11.0");
capability.setCapability(MobileCapabilityType.DEVICE_NAME, "Pixel 4a");
capability.setCapability(MobileCapabilityType.UDID, "09091JEC214196");
capability.setCapability(MobileCapabilityType.APP, System.getProperty("user.dir") + getApkRelativePATH());
androidDriver = new AndroidDriver<MobileElement>(new URL("http://192.168.88.60:4444/wd/hub"), capability);
androidDriver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
return androidDriver;
} catch (Exception ex) {
throw new Exception("Error : " + ex.getMessage());
}
}
这是一个测试样品。
public class PersonalRegistrationTests extends TestBase{
@Test(priority = 1)
public void verifyRegistrationWithSupportedCountry() throws Exception {
RegistrationScreens registrationScreens = new RegistrationScreens(androidDriver);
try {
registrationScreens.allowLocationPermission();
registrationScreens.allowContactsPermission();
registrationScreens.visitOnboardingScreens();
registrationScreens.selectCountry("United States");
registrationScreens.enterPhoneNumber("5678911111");
registrationScreens.sendCode();
Assert.assertTrue(registrationScreens.checkOTPScreenVisibility());
}catch(Exception ex){
throw new SkipException(ex.getMessage());
}
}
我在我的框架中哪里做错了?提前感谢:)
>
对于设置函数而不是@BeforeSuite使用@BeforeTest,这将确保在每次测试之前执行该函数
在“getAndroidDriver”功能中,您只能设置一个移动设备的功能。相反,以下是如何构建解决方案:
形容词(adjective的缩写)在testng xml文件b的测试标签下使用“parameters”标签。在参数中设置功能值,例如设置设备名称c。在Galaxy A20s的其他测试标签下也这样做
使用设置函数的@Parameters注释来接收传递的值,例如@Parameter({“udid”,“deviceName”})
更改设置函数定义以接受参数值,例如 setUp(字符串 udid,字符串设备名称)
将setup函数中收到的参数值发送给getAndroidDriver函数。
完成以上操作后,您的设置和getAndroidDriver函数将与两组不同的参数值并行执行
确保还通过参数标记传递 appium 端口号。
我想使用Appium在多个iOS设备上并行运行我的自动化脚本。我可以在Android系统上执行这个并行测试,但不能在iOS上。 我们有没有办法在iOS上执行此操作。 我使用的工具有:SeleniumGrid、Appium和TestNG框架。
我想使用appium在特定的xpath上执行向左滑动。不管怎样,我能做到吗?
嗨,我想在appium上使用ios模拟器并行运行ios测试用例。我知道MAC会有限制,因为只有一个模拟器会启动,但有没有后门入口可以让它们并行运行,我不想使用网格,因为有一些原因,所以有没有办法在ios模拟器上并行运行ios测试用例。 如果我一次运行两个不同端口和地址的appium服务器,只有一个ios模拟器会启动,因为它会关闭另一个。 我使用的是1.6.4 appium服务器和Xcode 8。
使用Browserstack教程(https://www.browserstack.com/app-automate/appium-junit)和样本项目(https://github.com/browserstack/junit-appium-app-browserstack)我正在努力设置并行测试。 具体来说,我需要运行suirte与Cucumber.class()我的测试从场景中读取,而Br
我试图在多个android设备的chrome浏览器上运行我的测试。我使用的量角器与鸦片。我启动2 appium服务器具有不同的端口,即。,和,并指定具有2个设备信息的多功能。我尝试了两个,模拟器和真实的设备。当我运行配置文件时,两个Appium服务器都试图访问一个设备,即使我指定了设备的UDID。我对量角器非常陌生。有人能帮我吗?下面是我的配置文件 config.js
我知道为了使用Appium控制多个设备,我需要启动多个具有不同端口的Appium服务器。但是,当多个设备连接到主机时,我无法获得如何将部分测试目标指向特定设备的信息。 我知道,下面是我需要做的两种配置,以便处理连接到计算机的多个设备。 > 端口设置:如以下webdriver初始化中的4723 desired_caps不同的设备。 所需的_caps_first_设备={'platformName':