Robotframework Robot框架:有没有什么方法可以让我们一次在多个andriod设备上执行测试用例(相同的测试用例/测试套件)?

Robotframework Robot框架:有没有什么方法可以让我们一次在多个andriod设备上执行测试用例(相同的测试用例/测试套件)?,robotframework,Robotframework,一旦应用程序在多个android设备上启动。我们如何在多个移动设备上同时执行相同的测试用例?因为我有很多测试用例要在多个android设备上执行。我试图通过在测试用例中传递udid或Appium服务器名称来使用For循环,但它不起作用。它只在单个设备上执行测试用例。有没有任何方法可以让我们同时在多个Android设备上执行测试用例(相同的测试用例/测试套件)?您可以使用--argumentfile[NUMBER]选项。您可以与--argumentfile[NUMBER]选项一起使用。您可以将打开

一旦应用程序在多个android设备上启动。我们如何在多个移动设备上同时执行相同的测试用例?因为我有很多测试用例要在多个android设备上执行。我试图通过在测试用例中传递udid或Appium服务器名称来使用For循环,但它不起作用。它只在单个设备上执行测试用例。有没有任何方法可以让我们同时在多个Android设备上执行测试用例(相同的测试用例/测试套件)?

您可以使用--argumentfile[NUMBER]选项。

您可以与--argumentfile[NUMBER]选项一起使用。

您可以将
打开的应用程序中的会话保存到字典中,并在循环中使用它们在每部手机上执行一些操作。

请用代码编辑您的问题以获得进一步帮助。

您可以将
打开的应用程序中的会话保存在字典中,并在循环中使用它们在每部手机上执行一些操作。

请用代码编辑您的问题以获得进一步帮助。

您基本上想要做的是并行执行测试。有许多工具可以轻松实现这一点,覆盖范围广(大量设备和风格),如SeeTest Cloud、Xamarin测试云、AWS设备场、Perfecto等

但是,如果您想使用Appium和TestNG实现,这仍然是可能的。以下是高级步骤:

  • 使用不同的方法启动Appium server的多个实例 作为节点一部分的地址、端口、回调端口和引导端口 指挥部
  • 获取设备的UUID并以TestNG xml形式传递
  • 以套件的形式运行xml
  • 下面是包含确切命令和步骤的链接:
    您基本上想要做的是并行执行测试。有许多工具可以轻松实现这一点,覆盖范围广(大量设备和风格),如SeeTest Cloud、Xamarin测试云、AWS设备场、Perfecto等

    但是,如果您想使用Appium和TestNG实现,这仍然是可能的。以下是高级步骤:

  • 使用不同的方法启动Appium server的多个实例 作为节点一部分的地址、端口、回调端口和引导端口 指挥部
  • 获取设备的UUID并以TestNG xml形式传递
  • 以套件的形式运行xml
  • 下面是包含确切命令和步骤的链接:

    您可以使用以下方法解决您的问题。正如我在前面的回答中所说,您可以将驱动程序保存在字典
    和{drivers}
    中,并在循环中使用它在所有设备上执行重复操作

    *** Settings ***
    Library           AppiumLibrary
    Library          Collections
    Library          Process
    
    *** Variables ***
    ${APPIUM_SERVER1}    http://127.0.0.1:4723/wd/hub
    ${APPIUM_SERVER2}    http://127.0.0.1:4750/wd/hub
    ${udid_device1}    udid of device 1
    ${udid_device2}    udid of device 2
    
    *** Keywords ***
    setup and open android phone A
        &{drivers}=    Create Dictionary
        ${androiddriver1}=    Open Application    ${APPIUM_SERVER1}    platformName=android    platformVersion=7.0    deviceName=android   udid=${udid_device1}    automationName=uiautomator2
        ...    appPackage=com.android.contacts    newCommandTimeout=2500    appActivity=com.android.contacts.activities.PeopleActivity
        Set To Dictionary    ${drivers}    ${udid_device1}=${androiddriver1}
        Set suite variable    ${drivers}
    
    
    setup and open android phone B
        ${androiddriver2}=    Open Application    ${APPIUM_SERVER2}    platformName=android    platformVersion=7.0    deviceName=android    udid=${udid_device2}    automationName=uiautomator2
        ...    appPackage=com.htc.contacts   newCommandTimeout=2500    noReset=True    appActivity=com.htc.contacts.BrowseLayerCarouselActivity
        Set To Dictionary    ${drivers}    ${udid_device2}=${androiddriver2}
        Set suite variable    ${drivers}
        Log Dictionary    ${drivers}
    
    Open URL
        :FOR    ${key}    IN    @{drivers.keys()}
        \    ${value}=    Get From Dictionary    ${drivers}    ${key}
        \    Log    ${key}, ${value}
        \    repetitive actions here
    

    你可以用下面的方法来解决你的问题。正如我在前面的回答中所说,您可以将驱动程序保存在字典
    和{drivers}
    中,并在循环中使用它在所有设备上执行重复操作

    *** Settings ***
    Library           AppiumLibrary
    Library          Collections
    Library          Process
    
    *** Variables ***
    ${APPIUM_SERVER1}    http://127.0.0.1:4723/wd/hub
    ${APPIUM_SERVER2}    http://127.0.0.1:4750/wd/hub
    ${udid_device1}    udid of device 1
    ${udid_device2}    udid of device 2
    
    *** Keywords ***
    setup and open android phone A
        &{drivers}=    Create Dictionary
        ${androiddriver1}=    Open Application    ${APPIUM_SERVER1}    platformName=android    platformVersion=7.0    deviceName=android   udid=${udid_device1}    automationName=uiautomator2
        ...    appPackage=com.android.contacts    newCommandTimeout=2500    appActivity=com.android.contacts.activities.PeopleActivity
        Set To Dictionary    ${drivers}    ${udid_device1}=${androiddriver1}
        Set suite variable    ${drivers}
    
    
    setup and open android phone B
        ${androiddriver2}=    Open Application    ${APPIUM_SERVER2}    platformName=android    platformVersion=7.0    deviceName=android    udid=${udid_device2}    automationName=uiautomator2
        ...    appPackage=com.htc.contacts   newCommandTimeout=2500    noReset=True    appActivity=com.htc.contacts.BrowseLayerCarouselActivity
        Set To Dictionary    ${drivers}    ${udid_device2}=${androiddriver2}
        Set suite variable    ${drivers}
        Log Dictionary    ${drivers}
    
    Open URL
        :FOR    ${key}    IN    @{drivers.keys()}
        \    ${value}=    Get From Dictionary    ${drivers}    ${key}
        \    Log    ${key}, ${value}
        \    repetitive actions here
    


    谢谢我不想将Appium与TestNG一起使用。我将机器人框架与Appium一起使用。对于机器人框架,步骤也几乎相同。您必须创建多个Appium实例。只有执行部分更改。以下是有关详细信息的链接:您的链接无效。。是的,我已经有多个Appium实例在运行,并且有diff-port和host。。但这对我来说仍然不起作用。那么你已经完成了一半。但奇怪的是,同样的链接对我有效。再次发布:非常感谢。是的,我可以访问给定的链接。我已经手动启动了我的Appium实例,然后使用关键字在两台设备上启动了应用程序。但是当我在下面的测试用例中使用IF语句或For循环时,它只在最后访问的一台设备上工作。谢谢。。我不想将Appium与TestNG一起使用。我将机器人框架与Appium一起使用。对于机器人框架,步骤也几乎相同。您必须创建多个Appium实例。只有执行部分更改。以下是有关详细信息的链接:您的链接无效。。是的,我已经有多个Appium实例在运行,并且有diff-port和host。。但这对我来说仍然不起作用。那么你已经完成了一半。但奇怪的是,同样的链接对我有效。再次发布:非常感谢。是的,我可以访问给定的链接。我已经手动启动了Appium实例,然后在这两个设备上使用关键字启动了app。但是当我在下面的测试用例中使用IF语句或For循环时,它只在最后访问的一个设备上工作。*******关键字*******输入URL:For${Appium_SERVER1}${deviceName}${udid}在localhost:4723/wd/hub adb设备中。。。emulator-5556\等待页面包含元素xpath=//android.widget.EditText timeout=60\单击元素xpath=//android.widget.EditText[@text='Please enter URL']]\Input text xpath=//android.widget.EditText[@text='Please enter URL']xxx.xx.xx:9000\单击元素xpath=//android.widget.Button[@text='OK']–上述关键字未在两台设备上运行。它仅在上次访问的设备上运行。我如何使用For循环,以便在两台设备上逐个执行我的“ENTER URL”测试用例?将有问题的代码以正确格式粘贴,然后只有我们可以提供帮助*******关键字****输入URL:localhost中${APPIUM_SERVER1}${deviceName}${udid}的URL:4723/wd/hub adb设备。。。emulator-5556\等待页面包含元素xpath=//android.widget.EditText timeout=60\单击元素xpath=//android.widget.EditText[@text='Please enter URL']]\Input text xpath=//android.widget.EditText[@text='Please enter URL']xxx.xx.xx:9000\单击元素xpath=//android.widget.Button[@text='OK']–上述关键字未在两台设备上运行。它仅在上次访问的设备上运行。我如何使用For循环,以便在两台设备上逐个执行我的“ENTER URL”测试用例?将有问题的代码以正确格式粘贴,然后只有我们可以提供帮助!!谢谢。我尝试了上面的代码,但仍然没有执行我的测试