我对自动化ola这类移动应用程序的困惑不大。在我当前的项目中,我有一种类似的移动应用程序,驾驶员和乘客的UI根据各自的动作相互交互。
如何使用appium自动化这种情况意味着在给定的测试脚本中,我将如何验证UI,更重要的是,我将两次打开相同的应用程序,但对于用户(驾驶员和乘客)却不同,并在两个应用程序之间切换以验证功能在两个用户界面上。因为我被困在这里,请在这里帮助我。
答案 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将等待客户端发出新命令的时间(以秒为单位)