【问题标题】:Parallel Testing on iOS DevicesiOS 设备上的并行测试
【发布时间】:2016-03-20 01:16:13
【问题描述】:

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

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

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

【问题讨论】:

  • 我在发布问题时回答了我自己的问题,该功能正是为此目的而存在的。这个想法是,如果你有一个问题你自己解决,但觉得别人会让你提出问题然后回答它。如果将来有其他人问这个问题,他们可以得到答案。似乎是一件合乎逻辑且有用的事情,不是吗?
  • 不,我指的功能是“你想回答这个问题”复选框,它允许你写下你的答案,然后将问题和答案一起发布,这就是我所做的.
  • 但是为什么要提出这个问题呢? StackOverflow 不是一个教程网站...
  • 你是对的 - 你可以回答:meta.stackexchange.com/questions/12513/… 我只是不喜欢人们立即提出和回答他们自己的问题。这是我自己的观点,我在这里写它是因为 SO 建议在您对问题投反对票时发表评论。
  • @LiamFerris 哦,好的。直到现在我才看到您的第二条评论(对不起),并且不知道您提到的那个功能。链接文章中提到的“徽章”进一步证明了您的说法。在阅读有很多积分和奖牌的用户的答案时,我的理解是自我回答是不受欢迎的,应该删除问题。我现在显然看到它不正确。我不希望你把我以前的帖子读成可恨的,抱歉弄得这么乱:/

标签: java ios selenium instruments appium


【解决方案1】:

在我开始之前,根据我的调查,我只能使用 appium 的 git 源来实现并行 iOS 测试。从 npm install 工作时,它不起作用。


  1. 要运行多个仪器实例,您必须在创建 iOS appium 节点时设置临时目录。

为此,请使用以下参数:

--tmp /tmp/ios/--tmp /tmp/ios6/


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

REMOTE_DEBUGGER_PORT=27754

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

--webkit-debug-proxy-port 27754


我写了一个脚本来启动集线器,两个安卓节点,两个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 进程。

希望这会有所帮助, 利亚姆

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    • 2021-01-26
    • 2011-06-01
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多