环境准备
(1)WebDriverAgent(WDA)安装及打包部分,请参考:添加链接描述
(2)安装tidevice,请参考:添加链接描述
(3)安装Appium: npm install -g appium@1.22.3 app必须超过1.20以上
(4)确保iOS手机已连接,并使用tidevice list可以看到设备信息。
二、运行WDA
tidevice wdaproxy -B com.appiumtest22.WebDriverAgentRunner.xctrunner(wda的bundle id,参考wda打包安装步骤) --port 8200
如有多个设备需要增加-u 设备udid(通过tidevice list查看)。
三:之后访问http://运行wda机器IP:8200(运行端口)/status,如返回以下信息,则表示WDA运行成功。
四 :运行Appium Server
五:iOS真机运行App测试(以UICatalog为例)
UICatalog打包安装请参考:UICatalog示例程序打包_aovenus的专栏-测试新时代(微信公众号:测试新时代)-CSDN博客
运行场景:打开UICatalog应用
六:代码
package com.example.demo;
import io.appium.java_client.ios.IOSDriver;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.WebDriverWait;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.function.Function;
public class IosTest {
private static IOSDriver iosDriver;
public static void main(String[] args) throws MalformedURLException {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("udid", "00008101-001E7C340C29001E");
capabilities.setCapability("deviceName", "iPhone 12");
capabilities.setCapability("platformVersion", "15.4.1");
capabilities.setCapability("webDriverAgentUrl", "http://localhost:8200");
capabilities.setCapability("usePrebuiltWDA", "false");
capabilities.setCapability("useXctestrunFile", "false");
capabilities.setCapability("skipLogCapture", "true");
capabilities.setCapability("platformName", "iOS");
capabilities.setCapability("automationName", "XCUITest");
capabilities.setCapability("xcodeSigningId", "iPhone Developer");
capabilities.setCapability("bundleId", "com.ports.llc");
iosDriver = new IOSDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
WebElement element = findElement(iosDriver, "//XCUIElementTypeButton[@name='理财']");
element.click();
element = findElement(iosDriver, "//XCUIElementTypeStaticText[@name='全部']");
element.click();
}
private static WebElement findElement(WebDriver driver, String xpath){
WebDriverWait wait = new WebDriverWait(driver, 60);
return wait.until(new Function() {
public WebElement apply(WebDriver webDriver) {
return webDriver.findElement(By.xpath(xpath));
}
});
}
}



