当前位置: 首页 > 知识库问答 >
问题:

使用Appium对iOS设备进行并行测试

长孙淳
2023-03-14

我想使用Appium在多个iOS设备上并行运行我的自动化脚本。我可以在Android系统上执行这个并行测试,但不能在iOS上。

我们有没有办法在iOS上执行此操作。

我使用的工具有:SeleniumGrid、Appium和TestNG框架。

共有2个答案

栾英资
2023-03-14

下面的代码应该可以跨android和ios运行。但是appium服务器应该在MAC上运行。

  //Have your setup(Eclipse,Android SDK, ioswebkit proxy, Appium) installed in MAC for instance 10.10
    //create an instance with your thread to generalize for both android and ios


    public LaunchAppiumServer(){

        public synchronized void startiOSWebKitProxy(String UDID,String debugProxy,String platform){
                if(Settings.getProperty("testbed").equals("localbrowser") && !Settings.getProperty("LOCAL_SETTINGS").contains("Emulator")){         
                    if(platform.equals("ios")){
                        //Webkit Proxy command          
                        CommandLine iOSProxyCommand = new CommandLine("ios_webkit_debug_proxy");
                        iOSProxyCommand.addArgument("-c");
                        iOSProxyCommand.addArgument(UDID+":"+debugProxy);
                        iOSProxyCommand.addArgument("-F");

                        DefaultExecuteResultHandler iOSProxyresultHandler = new DefaultExecuteResultHandler();
                        DefaultExecutor iOSProxyexecutor = new DefaultExecutor();
                        iOSProxyexecutor.setExitValue(1);
                        try {
                            iOSProxyexecutor.execute(iOSProxyCommand, iOSProxyresultHandler);
                            Thread.sleep(5000);
                            System.out.println("iOS Proxy started in :"+ deviceName);
                        } catch (IOException e) {
                            e.printStackTrace();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }  

         public synchronized void startAppiumServer(String UDID,String port,String  platform,String debugProxy) throws Exception{
              CommandLine command = new CommandLine("appium");
                    command.addArgument("--udid");  
                    command.addArgument(UDID);
                    command.addArgument("--address", false);
                    command.addArgument("127.0.0.1");
                    command.addArgument("--port", false);
                    command.addArgument(port);
                    command.addArgument("--webkit-debug-proxy-port");
                    command.addArgument(debugProxy);
                    command.addArgument("--tmp");
                    command.addArgument("/tmp/appium-"+port);
                    command.addArgument("--full-reset", true);
                    command.addArgument("--log-level", false);
                    command.addArgument("error");
                    command.addArgument("--log", false);
                    Timestamp currentTimestamp = new java.sql.Timestamp(Calendar.getInstance().getTime().getTime());
                    command.addArgument("/Users/sethu/Documents/appiumLogs/appium"+currentTimestamp.toString().replace(" ", "")+".log");
                    DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler();
                    executor.setExitValue(1);
                    try {
                        executor.execute(command, resultHandler);
                    } catch (IOException e) {
                        System.out.println("Unable to Launch Appium Server: ");
                        e.printStackTrace();
                    } catch (InterruptedException e) {
                        System.out.println("Unable to Launch Appium Server: ");
                        e.printStackTrace();
                    }
        }
    }
钮巴英
2023-03-14

是的,可以使用Selenium网格。但您必须知道,苹果有一个限制,即只有一台iOS设备可以连接到一台MAC设备。因此,例如,如果您有3个iOS设备,每个设备都连接到单独的MAC,则必须在每个MAC上为特定设备启动appium节点,并将其链接到中心Selenium网格实例。在那之后,只需启动测试,就像在Android的情况下一样。

 类似资料:
  • 目标:因为我是新来Appium的。我正在尝试在Ubuntu上使用Appium网格在多个android设备上并行自动化Appium测试 我成功启动了一个网格中心服务器和两个具有不同端口的节点 问题:无法同时在两台设备上运行测试用例(我确信问题出在我如何设计框架上)。我不知道如何传递两个设备的能力,同时启动设备(主要问题)。我必须为此使用多线程吗?如果是,那么如何使用 实际:当我在同一个设备上运行多个

  • 嗨,我想在appium上使用ios模拟器并行运行ios测试用例。我知道MAC会有限制,因为只有一个模拟器会启动,但有没有后门入口可以让它们并行运行,我不想使用网格,因为有一些原因,所以有没有办法在ios模拟器上并行运行ios测试用例。 如果我一次运行两个不同端口和地址的appium服务器,只有一个ios模拟器会启动,因为它会关闭另一个。 我使用的是1.6.4 appium服务器和Xcode 8。

  • 我是Appium的新手,尝试使用Appium和Selenium(Java)并行运行2台android设备,但只有1台设备在运行我的测试脚本。下面是我的测试脚本(junit),我很难尝试解决这个问题。我没有同时使用任何网格或云网格(SauceLabs/BrowserStack),因为我现在想在本地监视它。 我不是很确定我需要在这里补充什么细节,但我很乐意回答任何问题和建议,将非常感谢。 提前谢谢!!

  • 我正在使用Jenkins CI构建我的iOS项目。对于这个任务,我使用sh脚本通过运行xcodebuild直接从git repo构建二进制文件,这很好。目前,我使用eclipse中的appium运行JUnit测试来测试我的应用程序,但我也想将它们集成到Jenkins中。我找到了一些使用ant脚本将JUnit测试集成到jenkins中的教程,但我没有使用ant来构建我的项目。没有ant脚本,我如何将

  • 我想使用appium在特定的xpath上执行向左滑动。不管怎样,我能做到吗?

  • 我使用的是Appium Version1.9.1和基于Appium Java TestNG的框架构建,但是当我在真实设备上的AWS设备场上执行I时,我会得到以下错误: WebDriverException:处理命令时发生未知的服务器端错误。原始错误:未处理的endpoint:/session/bc6e4901-43a6-4c66-913a-ebaf8482dd4b/wda/screen-http: