iOS设备上的并行测试

时间:2015-12-14 14:09:24

标签: java ios selenium instruments appium

当尝试并行测试多个iOS设备时,会出现两个问题:

  1. Instruments,Mac开发人员工具只运行一个实例。这意味着一次只能运行一次测试。

  2. iOS-Webkit-Debug-Proxy,硬编码为在单个端口(27753)上运行,因为它假定只有一个仪器实例

1 个答案:

答案 0 :(得分:2)

在开始之前,从我的调查开始,我只能使用appit的git源实现并行iOS测试。从npm安装工作时,它无法正常工作。

  1. 要运行多个工具实例,必须在创建iOS appium节点时设置临时目录。
  2. 为此,请使用以下参数:

    --tmp /tmp/ios/--tmp /tmp/ios6/等。

    1. 通过在终端中设置REMOTE_DEBUGGER_PORT变量,可以在不同的端口上运行iOS-Webkit-Debug-Proxy。
    2. REMOTE_DEBUGGER_PORT=27754

      您还需要为appium节点使用--webkit-debug-proxy-port参数。

      --webkit-debug-proxy-port 27754

      我写了一个脚本来启动集线器,两个android节点,两个iOS节点,并在几个程序中记录错误。

      pkill elenium
      pkill java
      pkill ios_webkit_debug_proxy
      pkill node
      
      java -jar ../libs/selenium-server-standalone-2.46.0.jar -role hub -port 4444 > logs/log_hub.txt 2>&1 &
      if [ $? = 1 ]; then
          echo hub
          exit 1
      fi
      
      appium --nodeconfig /Path/to/androidOne.json -p 4823 -bp 5724 --chromedriver-port 9515 > logs/log_androidOne.txt &
      if [ $? = 1 ]; then
          echo node 1
          exit 1
      fi
      appium --nodeconfig /Path/to/androidTwo.json -p 4723 -bp 5723 --chromedriver-port 9516 > logs/log_androidTwo.txt &
      if [ $? = 1 ]; then
          echo node 2
          exit 1
      fi
      
      node appium --session-override --nodeconfig /Path/to/iPod.json --tmp /tmp/ios/ -p 4623 --webkit-debug-proxy-port 27753 --safari > logs/log_iPodTouch.txt &
      if [ $? = 1 ]; then
      echo node3
      exit 1
      fi
      
      node appium --session-override --nodeconfig /Path/to/iPad.json --tmp /tmp/ios6/ -p 4523 --webkit-debug-proxy-port 27754 --safari > logs/log_iPad.txt &
      if [ $? = 1 ]; then
      echo node4
      exit 1
      fi
      
      sleep 5
      REMOTE_DEBUGGER_PORT=27753
      ./ios-webkit-debug-proxy-launcher.js -c UDID:27753 -d > logs/log_iwdpl.txt &
      if [ $? = 1 ]; then
          echo iwdpl
          exit 1
      fi
      REMOTE_DEBUGGER_PORT=27754
      ./ios-webkit-debug-proxy-launcher.js -c UDID:27754 -d > logs/log_iwdpl2.txt &
      if [ $? = 1 ]; then
      echo iwdpl2
      exit 1
      fi
      

      该脚本首先杀死任何事先存在的进程,如果你正在运行其他java东西,请小心杀死所有java进程。

      希望这有帮助, 利安