杭州线下第一期_绕过 Appium 的 iOS 测试_20180603

简介

绕过Appium Server

  • 稳定的测试环境。PS: Appium间接调用WDA经常失败,xcode启动WDA非常稳定。
  • 更快的运行速度。

需要真机。

Xcode启动WDA

自带的Inspector http://localhost:8100/inspector

命令行启动, 要连接着手机

UDID=$(idevice_id -l)
xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination "id=$UDID" test-without-building

安装 wdaproxy

停止掉iproxy

PS: 安装不了就开代理 代理 export HTTP_PROXY=http://112.126.81.122:6$(date +%m%d)

brew install openatx/tap/wdaproxy
# upgrade with
# brew upgrade wdaproxy
wdaproxy -p 8100

浏览器访问 localhost:8100 会看到如下的界面

使用Appium Desktop

Appium -> New Session Window

没有Mac的可以等旁边人做完之后,Host部分填旁边人的主机IP

ideviceinstaller -l获取bundleId

参考

from appium import webdriver
import time
import selenium

driver = webdriver.Remote("http://127.0.0.1:8100/wd/hub", {"bundleId": "com.example.apple-samplecode.UICatalog"})

def wait_element(xpath, timeout = 30):
    deadline = time.time() + timeout
    while time.time() < deadline:
        try:
            el = driver.find_element_by_xpath(xpath)
            return el
        except selenium.common.exceptions.NoSuchElementException:
            time.sleep(.2)
    raise RuntimeError("NoSuchElementException in wait_element")

wait_element('//*[@name="Action Sheets"]').click()
wait_element('//*[@name="Okay / Cancel"]' # TODO

扩展

修改WDA的截图函数,提高截图速度。