如何使用不同类型的用户打开同一移动应用程序以及如何使用appium在它们之间进行切换

时间:2019-02-18 03:41:02

标签: java automation appium

我对自动化ola这类移动应用程序的困惑不大。在我当前的项目中,我有一种类似的移动应用程序,驾驶员和乘客的UI根据各自的动作相互交互。

如何使用appium自动化这种情况意味着在给定的测试脚本中,我将如何验证UI,更重要的是,我将两次打开相同的应用程序,但对于用户(驾驶员和乘客)却不同,并在两个应用程序之间切换以验证功能在两个用户界面上。因为我被困在这里,请在这里帮助我。

2 个答案:

答案 0 :(得分:1)

要在Appium中实现此目的,您需要运行2个分别处理设备的Appium节点。

示例代码:

DesiredCapabilities capabilitiesOne = new DesiredCapabilities(); //set for 1st device
DesiredCapabilities capabilitiesTwo = new DesiredCapabilities(); //set for 2nd device
...

String hubOneURL = "http://127.0.0.1:4723/wd/hub"; // Appium node for 1st device
String hubTwoURL = "http://127.0.0.1:4733/wd/hub"; // Appium node for 2nd device

AndroidDriver driverOne = new AndroidDriver(new URL(hubOneURL), capabilitiesOne);
AndroidDriver driverTwo = new AndroidDriver(new URL(hubTwoURL), capabilitiesTwo);

driverOne.doStuff();
driverTwo.doMoreStuff();

然后像这样启动您的Appium节点:

appium -a 127.0.0.1 -p 4723 //1st node
appium -a 127.0.0.1 -p 4733 //2nd node

答案 1 :(得分:0)

您必须运行两个具有不同端口和引导端口的Appium服务器实例。

通过端口4732和引导端口4733的终端或Appium桌面应用程序启动 passenger应用程序的Appium服务器

>appium -a 127.0.0.1 -p 4732 -bp 4733 --session-override

从终端或Appium桌面应用程序中的端口4734和引导程序端口4735中启动驱动程序应用程序的Appium服务器

>appium -a 127.0.0.1 -p 4734 -bp 4735 --session-override
  

您还必须在期望的功能中使用设备 udid 来指定设备的驱动程序。 udid 是唯一的设备标识符。您可以使用 adb设备命令找到被撤消的设备。

为乘客和驾驶员应用程序定义您的所需功能,并指定 deviceName udid platformName automationName ,( appPackage appActivity )或( app

  

您可能需要在DesiredCapabilities中包含 newCommandTimeout

为乘客和驾驶员应用程序定义并初始化 AppiumDriver ,如下所示。

public static AppiumDriver<MobileElement> pDriver; //passenger app
public static AppiumDriver<MobileElement> dDriver; //driver app
pDriver= new AndroidDriver<MobileElement>(new URL("http://127.0.0.1:4732/wd/hub"), pCaps);
//pCaps = passenger app DesiredCapabilities
dDriver=new AndroidDriver<MobileElement>(new URL("http://127.0.0.1:4734/wd/hub"), dCaps);
//dCaps = driver app DesiredCapabilities
  

您必须将AppiumDriver定义为静态

     

bootstrap端口>设备上用于与Appium对话的端口(仅适用于Android)

     

Session-0verride>启用会话覆盖

     

newCommandTimeout>在假设客户端退出并结束会话之前,Appium将等待客户端发出新命令的时间(以秒为单位)