Appium进行自动化测试有两个好处:
1. Appium在不同平台中使用了标准的自动化APIs,所以在跨平台时,不需要重新编译或者修改自己的应用。
2. Appium支持Selenium WebDriver支持的所有语言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl语言,更可以使用Selenium WebDriver的Api。Appium支持任何一种测试框架。如果只使用Apple的UIAutomation,我们只能用javascript来编写测试用例,而且只能用Instruction来运行测试用例。同样,如果只使用Google的UIAutomation,我们就只能用java来编写测试用例。Appium实现了真正的跨平台自动化测试。
使用appium进行ios自动化需知:
IOS自动化测试需要Mac os操作系统
Mac OS X 10.7或者更高版本,推荐10.8.4版本
Android自动化测试可以在Mac、Linux上进行。
需要安装node和npm(node版本高于0.8)
Mac Xcode(本人使用)
Apple开发者工具(iphone模拟器sdk,及命令行工具)
安装appium
这里转发一个博客:http://www.cnblogs.com/oscarxie/p/3894559.html
到这里环境已经准备的差不多了,我开始自己的第一个ios自动化脚本
appium设置:
使用真机连接,要选中UUID,将真机的UUID填入,选择正确真机ios版本,这样在启动时,就会自动去寻找链接的设备。
发现在虚拟机上启动inspector,application 的设置必须设置App Path,使用BundleID将启动不了,会报以下错误:
Could not start a new session
Be sure the Appium server is running with an application opened by using the "App Path" parameter in Appium.app (along with package and activity for Android) or by connecting with selenium client and supplying this in the desired capabilities object.
如果有inspector启动不了,请查找之前写的一篇文章:http://www.cnblogs.com/llining/p/5040290.html
启动之后显示界面:
下面介绍下使用appium 录制脚本
打开inspector后,会发现上面有个record按钮,点击它,下面会弹出如下所示窗口:
点选某个文本框控件,点击text后,输入要输入的文本,点击Send Keys,代码中就会生成一行新的代码,如图
在Touch 中,会有一个常用动作,如点击、活动、长按等,Text中,是对文本的操作,Locator是用来检查定位元素的路径的正确,Misc中是对窗口中弹出的提示框的处理。
录制完毕后,点击sava,保存代码。
导出的代码如:
import io.appium.java_client.AppiumDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.net.URL;
public class {scriptName} {
public static void main(String[] args) {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("appium-version", "1.0");
capabilities.setCapability("platformName", "iOS"); //表示要启动的设备为ios
capabilities.setCapability("platformVersion", "9.1"); //启动设备的系统版本
capabilities.setCapability("deviceName", "iPhone 6 Plus"); //启动设备名称,虚拟机的只写设备名称就可以了,真机需要填写UUID
capabilities.setCapability("app", "/Users/123/Downloads/Reserve.ipa"); //要测试的包
wd = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); //appiumserver 连接地址
wd.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
wd.findElement(By.xpath("//UIAApplication[1]/UIAWindow[1]/UIAScrollView[1]/UIATextField[1]/UIATextField[1]")).sendKeys("156XXXX2606"); //像文本框输入文本
wd.findElement(By.xpath(".//UIAScrollView[1]/UIASecureTextField[1]/UIASecureTextField[1]")).sendKeys("111111"); //像文本框输入文本
wd.findElement(By.xpath("//UIAApplication[1]/UIAWindow[1]/UIAScrollView[1]/UIAButton[1]")).click(); //点击登录按钮
wd.close();
}
}
以上脚本,就实现一个简单的登录功能。