第一个Demo-Web
本章Web所指的是移动端(模拟器/真机)里的浏览器(如:Chrome、Safari)。
1.1创建项目
1、启动Eclipse,鼠标右键New--->Project。
2、创建Java项目,选择Java目录下的Java Project。
3、输入项目名称(例如:My_Appium_Demo),点击Finish完成。
4、创建lib文件夹,用来存放jar包。把Appium Clients jar和Selenium jar包拷贝到文件夹里。
5、选中拷贝过来的Appium Clients jar和Selenium jar包,鼠标右键Build Path--->Add to Build Path。
6、Appium Clients jar和Selenium jar包已经被项目引用了。
7、选中src源文件夹,鼠标右键New--->Class,创建Java类,输入包名(例如:com.test.demo)、类名(例如:模拟器示例为Android_Web_Simulator,真机示例为Android_Web_RealMachine),点击Finish完成。
8、第一个Demo项目,Android-Web(模拟器/真机)创建完成。
1、本章示例模拟器使用的是Genymotion,首先打开Genymotion模拟器,打开指定的Android版本。
2、首先获取模拟器设备标识,命令行输入命令 adb devices
如图所示,只查询到1台此模拟器,在脚本里可以不用添加此参数
capabilities.setCapability("udid", " 192.168.113.101:5555");
就可以指定此台模拟器执行。
如果是多台设备,如图所示,查询到2台(1台模拟器192.168.113.101:5555、1台真机MYV0215825000026),在脚本就要添加此参数
capabilities.setCapability("udid", "192.168.113.101:5555");
测试执行的时候来指定这台模拟器执行。
3、在模拟器启动浏览器进行测试,所以在脚本参数browserName中指定浏览器,本章示例指定模拟器默认的浏览器Browser,则参数填写
capabilities.setCapability("browserName", "Browser");
4、接下来打开PC的Chrome浏览器,输入访问地址chrome://inspect/
在模拟器启动默认浏览器,打开百度首页,如图所示。
点击页面链接,弹出新窗口,显示当前页面的Webview元素信息(由于国内网络问题,第一次页面加载可能需要FANQIANG)。元素定位方法同Selenium WebDriver一致。
5、脚本代码:
package com.test.demo;
import java.net.URL;
import org.openqa.selenium.By;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;
/**
* Android-Web-模拟器
*
* @author wangmcn
*
*/
public class Android_Web_Simulator {
public static void main(String[] args) throws Exception {
AndroidDriverdriver;
DesiredCapabilities capabilities = new DesiredCapabilities();
// 使用哪个自动化测试引擎
// 默认为Appium,或Selendroid或UiAutomator2或Espresso用于Android;或XCUITest用于IOS
capabilities.setCapability("automationName", "Appium");
// 使用哪个移动操作系统平台
// iOS, Android, FirefoxOS
capabilities.setCapability("platformName", "Android");
// 移动操作系统版本
capabilities.setCapability("platformVersion", "6.0");
// 使用的移动设备或模拟器的类型
// iPhone Simulator, iPad Simulator, iPhone Retina 4-inch, Android
// Emulator, Galaxy S4 等等
// 在IOS上,这个关键字的值必须是使用`instruments -s devices`得到的可使用的设备名称之一
// 在Android上,这个关键字目前不起作用
capabilities.setCapability("deviceName", "honor");
// 连接的物理设备的唯一设备标识
capabilities.setCapability("udid", "192.168.113.101:5555");
// 启用Unicode输入法,设置为true可以输入中文字符,默认为false
capabilities.setCapability("unicodeKeyboard", true);
// 在设定了`unicodeKeyboard`关键字运行Unicode测试结束后,将键盘重置为其原始状态
// 如果单独使用,将会被忽略,默认值`false`
capabilities.setCapability("resetKeyboard", true);
// 设置为true,每次启动时覆盖session,否则第二次运行会报错不能新建session
capabilities.setCapability("sessionOverride", true);
// 设置命令超时时间,单位:秒
// 达到超时时间仍未接收到新的命令时Appium会假设客户端退出然后自动结束会话
capabilities.setCapability("newCommandTimeout", 60);
// 需要进行自动化测试的手机Web浏览器名称
// 如果是对应用App进行自动化测试,这个关键字的值应为空
// Android上可以用'Chrome'、'Chromium'、'Browser'
// IOS上可以用'Safari'
capabilities.setCapability("browserName", "Browser");
// 在Web上下文中,使用native(adb)方法获取屏幕截图,而不是代理ChromeDriver,默认为false
capabilities.setCapability("nativeWebScreenshot", true);
// 移至非ChromeDriver网页浏览时,请停用ChromeDriver会话,默认为false
capabilities.setCapability("recreateChromeDriverSessions", true);
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
System.out.println("启动Browser");
// 打开百度首页
driver.get("https://www.baidu.com");
// 搜索框输入Appium
driver.findElement(By.id("index-kw")).sendKeys("Appium");
// 点击百度一下
driver.findElement(By.id("index-bn")).click();
Thread.sleep(2000);
driver.quit();
}
}
1、首先获取真机设备标识,命令行输入命令 adb devices
2、真机设备里没有要测试的Chrome应用程序,可以在执行自动化测试前先安装到设备里,安装Chrome输入安装命令 adb install -r 进行安装,或者使用手机助手进行安装。
3、在真机启动浏览器进行测试,所以在脚本参数browserName中指定浏览器,本章示例指定已在真机安装完成的Chrome浏览器,则参数填写
capabilities.setCapability("browserName", "Chrome");
4、接下来打开PC的Chrome浏览器,输入访问地址chrome://inspect/
在真机启动Chrome浏览器,打开百度首页,如图所示。
点击页面链接,弹出新窗口,显示当前页面的Webview元素信息(由于国内网络问题,第一次页面加载可能需要FANQIANG)。元素定位方法同Selenium WebDriver一致。
5、脚本代码:
package com.test.demo;
import java.net.URL;
import org.openqa.selenium.By;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;
/**
* Android-Web-真机
*
* @author wangmcn
*
*/
public class Android_Web_RealMachine {
public static void main(String[] args) throws Exception {
AndroidDriverdriver;
DesiredCapabilities capabilities = new DesiredCapabilities();
// 使用哪个自动化测试引擎
// 默认为Appium,或Selendroid或UiAutomator2或Espresso用于Android;或XCUITest用于IOS
capabilities.setCapability("automationName", "Appium");
// 使用哪个移动操作系统平台
// iOS, Android, FirefoxOS
capabilities.setCapability("platformName", "Android");
// 移动操作系统版本
capabilities.setCapability("platformVersion", "6.0");
// 使用的移动设备或模拟器的类型
// iPhone Simulator, iPad Simulator, iPhone Retina 4-inch, Android
// Emulator, Galaxy S4 等等
// 在IOS上,这个关键字的值必须是使用`instruments -s devices`得到的可使用的设备名称之一
// 在Android上,这个关键字目前不起作用
capabilities.setCapability("deviceName", "honor");
// 连接的物理设备的唯一设备标识
capabilities.setCapability("udid", "MYV0215825000026");
// 启用Unicode输入法,设置为true可以输入中文字符,默认为false
capabilities.setCapability("unicodeKeyboard", true);
// 在设定了`unicodeKeyboard`关键字运行Unicode测试结束后,将键盘重置为其原始状态
// 如果单独使用,将会被忽略,默认值`false`
capabilities.setCapability("resetKeyboard", true);
// 设置为true,每次启动时覆盖session,否则第二次运行会报错不能新建session
capabilities.setCapability("sessionOverride", true);
// 设置命令超时时间,单位:秒
// 达到超时时间仍未接收到新的命令时Appium会假设客户端退出然后自动结束会话
capabilities.setCapability("newCommandTimeout", 60);
// 需要进行自动化测试的手机Web浏览器名称
// 如果是对应用App进行自动化测试,这个关键字的值应为空
// Android上可以用'Chrome'、'Chromium'、'Browser'
// IOS上可以用'Safari'
capabilities.setCapability("browserName", "Chrome");
// 在Web上下文中,使用native(adb)方法获取屏幕截图,而不是代理ChromeDriver,默认为false
capabilities.setCapability("nativeWebScreenshot", true);
// 移至非ChromeDriver网页浏览时,请停用ChromeDriver会话,默认为false
capabilities.setCapability("recreateChromeDriverSessions", true);
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
System.out.println("启动Chrome");
// 打开百度首页
driver.get("https://www.baidu.com");
// 搜索框输入Appium
driver.findElement(By.id("index-kw")).sendKeys("Appium");
// 点击百度一下
driver.findElement(By.id("index-bn")).click();
Thread.sleep(2000);
driver.quit();
}
}
1、开启Appium服务(任选一种即可)
方式一:开启Appium Server
打开命令行,输入 appium --address 127.0.0.1 --port 4723 --no-reset --session-override
如图所示,Appium服务开启。
方式二:开启Appium Desktop
打开Appium Desktop
如服务IP和端口默认的情况下,直接点击Start Server v1.6.5来开启Appium服务,如图所示。
2、执行测试脚本,鼠标右键Run As--->Java Application。
脚本执行步骤:
(1)打开模拟器默认浏览器,打开百度首页
(2)搜索框输入Appium
(3)点击百度一下
(4)关闭模拟器默认浏览器
3、在执行测试脚本过程中,多多少少会遇到一些报错,排除元素定位不对的情况,大部分报错都是浏览器与浏览器驱动的版本不匹配所产生的。
例如以下报错,提示chromedriver=2.28.455520,Chrome版本必须>=55.0.2883.0
An unknown server-side error occurred while processing the command. Original error: unknown error: Chrome version must be >= 55.0.2883.0
(Driver info: chromedriver=2.28.455520 (cc17746adff54984afff480136733114c6b3704b),platform=Windows NT 6.1.7601 SP1 x86_64) (WARNING: The server did not provide any stacktrace information)
解决方法就是让浏览器版本与浏览器驱动版本匹配,让浏览器降级或者升级,或者让浏览器驱动降级或者升级。一般大部分都是让浏览器驱动进行降级或者升级。
那如何知道浏览器与浏览器驱动是否匹配呢?
将模拟器打开后,打开PC的Chrome浏览器,输入访问地址chrome://inspect/
如图所示,可以检测到udid为192.168.113.101:5555的模拟器
在udid为192.168.113.101:5555的模拟器里,打开要操作的浏览器,本章示例为Android默认的浏览器,之后打开百度首页,此时在PC的Chrome浏览器中可以看到百度首页的访问链接,如图所示,模拟器里的默认浏览器版本号为44.0.2403.119
模拟器里的浏览器版本号知道了,接下来开始确定要匹配的浏览器驱动版本,Android浏览器一般都是Chrome内核的,所以找与chromedriver版本是否匹配。
chromedriver历史版本下载地址:https://chromedriver.storage.googleapis.com/index.html
chromedriver版本支持的Chrome版本对应列表:
选择指定的chromedriver版本(如图:浏览器版本为44.0.2403.119,所以chromedriver版本选为2.20),可根据不同的平台(Win、Mac、Linux)下载指定的chromedriver。
指定的chromedriver下载完成后,双击可看此驱动版本号。
chromedriver应该放在哪里呢?根据所要使用的Appium服务,拷贝到Appium Server或者Appium Desktop的相应目录下即可。拷贝完成后,就可以正常使用了。
在Windows环境下:
Appium Server的chromedriver路径,例如:
C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win\chromedriver.exe
Appium Desktop的chromedriver路径,例如:
C:\Users\Administrator\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win\chromedriver.exe
在Mac环境下:
注意,当Appium服务用的是Appium Server时,执行脚本报错为An unknown server-side error occurred while processing the command. Original error: Trying to use a chromedriver binary at the path /usr/local/lib/node_modules/appium/node_modules/appium-chromedriver/chromedriver/mac/chromedriver, but it doesn't exist!
说明没有找到chromedriver驱动,按报错提示创建相应目录,并把chromedriver驱动拷贝到指定位置里。
Appium Server的chromedriver路径,例如:
/usr/local/lib/node_modules/appium/node_modules/appium-chromedriver/chromedriver/mac/chromedriver
Appium Desktop的chromedriver路径,例如:
/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-chromedriver/chromedriver/mac/chromedriver
1、开启Appium服务(任选一种即可)
方式一:开启Appium Server
打开命令行,输入 appium --address 127.0.0.1 --port 4723 --no-reset --session-override
如图所示,Appium服务开启。
方式二:开启Appium Desktop
打开Appium Desktop
如服务IP和端口默认的情况下,直接点击Start Server v1.6.5来开启Appium服务,如图所示。
2、执行测试脚本,鼠标右键Run As--->Java Application。
脚本执行步骤:
(1)打开真机里的Chrome浏览器,打开百度首页
(2)搜索框输入Appium
(3)点击百度一下
(4)关闭真机里的Chrome浏览器
3、在执行测试脚本过程中,多多少少会遇到一些报错,排除元素定位不对的情况,大部分报错都是浏览器与浏览器驱动的版本不匹配所产生的。
例如以下报错,提示chromedriver=2.28.455520,Chrome版本必须>=55.0.2883.0
An unknown server-side error occurred while processing the command. Original error: unknown error: Chrome version must be >= 55.0.2883.0
(Driver info: chromedriver=2.28.455520 (cc17746adff54984afff480136733114c6b3704b),platform=Windows NT 6.1.7601 SP1 x86_64) (WARNING: The server did not provide any stacktrace information)
解决方法就是让浏览器版本与浏览器驱动版本匹配,让浏览器降级或者升级,或者让浏览器驱动降级或者升级。一般大部分都是让浏览器驱动进行降级或者升级。
那如何知道浏览器与浏览器驱动是否匹配呢?
连接真机后,打开PC的Chrome浏览器,输入访问地址chrome://inspect/
如图所示,可以检测到udid为MYV0215825000026的真机
在udid为MYV0215825000026的真机里,打开要操作的Chrome浏览器,本章示例为已经在真机安装完成的Chrome浏览器,之后打开百度首页,此时在PC的Chrome浏览器中可以看到百度首页的访问链接,如图所示,真机里的Chrome浏览器版本号为61.0.3163.98
真机里的Chrome浏览器版本号知道了,接下来开始确定要匹配的浏览器驱动版本,由于是Chrome浏览器,所以找与chromedriver版本是否匹配。
chromedriver历史版本下载地址:https://chromedriver.storage.googleapis.com/index.html
chromedriver版本支持的Chrome版本对应列表:
选择指定的chromedriver版本(如图:浏览器版本为61.0.3163.98,所以chromedriver版本选为2.34),可根据不同的平台(Win、Mac、Linux)下载指定的chromedriver。
指定的chromedriver下载完成后,双击可看此驱动版本号。
chromedriver应该放在哪里呢?根据所要使用的Appium服务,拷贝到Appium Server或者Appium Desktop的相应目录下即可。拷贝完成后,就可以正常使用了。
在Windows环境下:
Appium Server的chromedriver路径,例如:
C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win\chromedriver.exe
Appium Desktop的chromedriver路径,例如:
C:\Users\Administrator\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win\chromedriver.exe
在Mac环境下:
注意,当Appium服务用的是Appium Server时,执行脚本报错为An unknown server-side error occurred while processing the command. Original error: Trying to use a chromedriver binary at the path /usr/local/lib/node_modules/appium/node_modules/appium-chromedriver/chromedriver/mac/chromedriver, but it doesn't exist!
说明没有找到chromedriver驱动,按报错提示创建相应目录,并把chromedriver驱动拷贝到指定位置里。
Appium Server的chromedriver路径,例如:
/usr/local/lib/node_modules/appium/node_modules/appium-chromedriver/chromedriver/mac/chromedriver
Appium Desktop的chromedriver路径,例如:
/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-chromedriver/chromedriver/mac/chromedriver
2.1创建项目
1、启动Eclipse,鼠标右键New--->Project。
2、创建Java项目,选择Java目录下的Java Project。
3、输入项目名称(例如:My_Appium_Demo),点击Finish完成。
4、创建lib文件夹,用来存放jar包。把Appium Clients jar和Selenium jar包拷贝到文件夹里。
5、选中拷贝过来的Appium Clients jar和Selenium jar包,鼠标右键Build Path--->Add to Build Path。
6、Appium Clients jar和Selenium jar包已经被项目引用了。
7、选中src源文件夹,鼠标右键New--->Class,创建Java类,输入包名(例如:com.test.demo)、类名(例如:模拟器示例为IOS_Web_Simulator、真机示例为IOS_Web_RealMachine),点击Finish完成。
8、第一个Demo项目,IOS-Web(模拟器/真机)创建完成。
1、使用Xcode创建模拟器,例如:本章示例模拟器名iPhone 8,IOS版本11.2。
2、在模拟器启动浏览器进行测试,所以在脚本参数browserName中指定浏览器,本章示例指定模拟器Safari浏览器,则参数填写
capabilities.setCapability("browserName", "Safari");
3、接下来开始使用查找元素定位工具来获取Webview元素的属性值等信息。
获取Webview元素方式有2种(任选一种即可),元素定位方法同Selenium WebDriver一致。
方式一:通过Mac上的Safari
首先将模拟器上的Safari打开,之后访问百度首页;之后打开Mac上的Safari,选择开发--->模拟器,可以看到此时模拟器打开的Webview页面,例如:百度首页。
点击百度首页的链接,会弹出新窗口,显示百度首页的html源码信息,则可以获取相应的Webview元素信息。
方式二:通过ios_webkit_debug_proxy工具
首先将模拟器上的Safari打开,之后访问百度首页;
之后在Mac上打开终端,输入启动代理命令
ios_webkit_debug_proxy -f chrome-devtools://devtools/bundled/inspector.html
Mac上打开Chrome浏览器,在地址栏输入http://localhost:9221/,这里会显示所有已连接的设备清单,选择一个设备并点击打开。例如:模拟器
此时检测到模拟器上打开的Webview页面,例如百度首页
选中后,鼠标右键点击转到……
打开选中的页面,将Chrome的开发者工具打开,显示html源码信息,则可以获取相应的Webview元素信息。
或者,选中后,鼠标右键复制链接地址
例如:
chrome-devtools://devtools/bundled/inspector.html?ws=localhost:9222/devtools/page/1
打开Chrome新窗口,将复制的地址粘贴后访问
显示html源码信息,则可以获取相应的Webview元素信息。
4、脚本代码:
package com.test.demo;
import java.net.URL;
import org.openqa.selenium.By;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.ios.IOSDriver;
import io.appium.java_client.ios.IOSElement;
/**
* IOS-Web-模拟器
*
* @author wangmcn
*
*/
public class IOS_Web_Simulator {
public static void main(String[] args) throws Exception {
IOSDriverdriver;
DesiredCapabilities capabilities = new DesiredCapabilities();
// 使用哪个自动化测试引擎
// 默认为Appium,或Selendroid或UiAutomator2或Espresso用于Android;或XCUITest用于IOS
capabilities.setCapability("automationName", "Appium");
// 使用哪个移动操作系统平台
// iOS, Android, FirefoxOS
capabilities.setCapability("platformName", "iOS");
// 移动操作系统版本
capabilities.setCapability("platformVersion", "11.2");
// 使用的移动设备或模拟器的类型
// iPhone Simulator, iPad Simulator, iPhone Retina 4-inch
// Android Emulator, Galaxy S4 等等
// 在IOS上,这个关键字的值必须是使用`instruments -s devices`得到的可使用的设备名称之一
// 在Android上,这个关键字目前不起作用
capabilities.setCapability("deviceName", "iPhone 8");
// 设置为true,每次启动时覆盖session,否则第二次运行会报错不能新建session
capabilities.setCapability("sessionOverride", true);
// 在此会话之前不要重置应用程序状态
// Android 不要停止应用程序,不要清除应用程序数据,也不要卸载apk
// IOS 测试后不要销毁或关闭SIM卡。开始测试运行在任何模拟运行,或设备插入
capabilities.setCapability("noReset", true);
// 执行完整的重置
// Android 停止应用程序,清除应用程序数据并在测试后卸载apk
// IOS 在真机设备测试后卸载应用程序,在模拟器测试后摧毁模拟器
capabilities.setCapability("fullReset", false);
// 设置命令超时时间,单位:秒
// 达到超时时间仍未接收到新的命令时Appium会假设客户端退出然后自动结束会话
capabilities.setCapability("newCommandTimeout", 60);
// 需要进行自动化测试的手机Web浏览器名称
// 如果是对应用App进行自动化测试,这个关键字的值应为空
// Android上可以用'Chrome'、'Chromium'、'Browser'
// IOS上可以用'Safari'
capabilities.setCapability("browserName", "Safari");
// Appium中使用IWDP,指的就是ios-webkit-debug-proxy
capabilities.setCapability("startIWDP", true);
// 当IOS的个人信息访问警告(如:位置、联系人、图片)出现时,自动选择接受(Accept),默认值`false`
capabilities.setCapability("autoAcceptAlerts", false);
driver = new IOSDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
System.out.println("启动Safari");
Thread.sleep(2000);
// 打开百度首页
driver.get("https://www.baidu.com");
Thread.sleep(2000);
// 搜索框输入Appium
driver.findElement(By.id("index-kw")).sendKeys("Appium");
Thread.sleep(2000);
// 点击百度一下
driver.findElement(By.id("index-bn")).click();
Thread.sleep(2000);
driver.close();
driver.quit();
}
}
1、首先获取真机udid设备标识,终端输入 idevice_id -l
如图所示:显示该真机的udid信息。
2、在真机启动浏览器进行测试,所以在脚本参数browserName中指定浏览器,本章示例指定真机Safari浏览器,则参数填写
capabilities.setCapability("browserName", "Safari");
3、接下来开始使用查找元素定位工具来获取Webview元素的属性值等信息。
获取Webview元素方式有2种(任选一种即可),元素定位方法同Selenium WebDriver一致。
方式一:通过Mac上的Safari
首先将真机上的Safari打开,之后访问百度首页;之后打开Mac上的Safari,选择开发--->真机(真机名为test),可以看到此时真机打开的Webview页面,例如:百度首页。
点击百度首页的链接,会弹出新窗口,显示百度首页的html源码信息,则可以获取相应的Webview元素信息。
方式二:通过ios_webkit_debug_proxy工具
首先将真机上的Safari打开,之后访问百度首页;
之后在Mac上打开终端,输入启动代理命令
ios_webkit_debug_proxy -f chrome-devtools://devtools/bundled/inspector.html
Mac上打开Chrome浏览器,在地址栏输入http://localhost:9221/,这里会显示所有已连接的设备清单,选择一个设备并点击打开。例如:真机
此时检测到真机上打开的Webview页面,例如百度首页
选中后,鼠标右键点击转到……
打开选中的页面,将Chrome的开发者工具打开,显示html源码信息,则可以获取相应的Webview元素信息。
或者,选中后,鼠标右键复制链接地址
例如:
chrome-devtools://devtools/bundled/inspector.html?ws=localhost:9222/devtools/page/1
打开Chrome新窗口,将复制的地址粘贴后访问
显示html源码信息,则可以获取相应的Webview元素信息。
4、脚本代码:
package com.test.demo;
import java.net.URL;
import org.openqa.selenium.By;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.ios.IOSDriver;
import io.appium.java_client.ios.IOSElement;
/**
* IOS-Web-真机
*
* @author wangmcn
*
*/
public class IOS_Web_RealMachine {
public static void main(String[] args) throws Exception {
IOSDriverdriver;
DesiredCapabilities capabilities = new DesiredCapabilities();
// 使用哪个自动化测试引擎
// 默认为Appium,或Selendroid或UiAutomator2或Espresso用于Android;或XCUITest用于IOS
capabilities.setCapability("automationName", "Appium");
// 使用哪个移动操作系统平台
// iOS, Android, FirefoxOS
capabilities.setCapability("platformName", "iOS");
// 移动操作系统版本
capabilities.setCapability("platformVersion", "11.1");
// 使用的移动设备或模拟器的类型
// iPhone Simulator, iPad Simulator, iPhone Retina 4-inch
// Android Emulator, Galaxy S4 等等
// 在IOS上,这个关键字的值必须是使用`instruments -s devices`得到的可使用的设备名称之一
// 在Android上,这个关键字目前不起作用
capabilities.setCapability("deviceName", "test");
// 连接的物理设备的唯一设备标识
capabilities.setCapability("udid", "c5dc675bddf7d1ac6d91783d5224d72b427f8d04");
// 设置为true,每次启动时覆盖session,否则第二次运行会报错不能新建session
capabilities.setCapability("sessionOverride", true);
// 在此会话之前不要重置应用程序状态
// Android 不要停止应用程序,不要清除应用程序数据,也不要卸载apk
// IOS 测试后不要销毁或关闭SIM卡。开始测试运行在任何模拟运行,或设备插入
capabilities.setCapability("noReset", true);
// 执行完整的重置
// Android 停止应用程序,清除应用程序数据并在测试后卸载apk
// IOS 在真机设备测试后卸载应用程序,在模拟器测试后摧毁模拟器
capabilities.setCapability("fullReset", false);
// 设置命令超时时间,单位:秒
// 达到超时时间仍未接收到新的命令时Appium会假设客户端退出然后自动结束会话
capabilities.setCapability("newCommandTimeout", 60);
// 需要进行自动化测试的手机Web浏览器名称
// 如果是对应用App进行自动化测试,这个关键字的值应为空
// Android上可以用'Chrome'、'Chromium'、'Browser'
// IOS上可以用'Safari'
capabilities.setCapability("browserName", "Safari");
// Appium中使用IWDP,指的就是ios-webkit-debug-proxy
capabilities.setCapability("startIWDP", true);
// 当IOS的个人信息访问警告(如:位置、联系人、图片)出现时,自动选择接受(Accept),默认值`false`
capabilities.setCapability("autoAcceptAlerts", false);
driver = new IOSDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
System.out.println("启动Safari");
Thread.sleep(2000);
// 打开百度首页
driver.get("https://www.baidu.com");
Thread.sleep(2000);
// 搜索框输入Appium
driver.findElement(By.id("index-kw")).sendKeys("Appium");
Thread.sleep(2000);
// 点击百度一下
driver.findElement(By.id("index-bn")).click();
Thread.sleep(2000);
driver.close();
driver.quit();
}
}
1、开启Appium服务(任选一种即可)
方式一:开启Appium Server
打开终端,输入 appium --address 127.0.0.1 --port 4723 --no-reset --session-override
如图所示,Appium服务开启。
方式二:开启Appium Desktop
打开Appium Desktop
如服务IP和端口默认的情况下,直接点击Start Server v1.7.2来开启Appium服务,如图所示。
2、执行测试脚本,鼠标右键Run As--->Java Application。
脚本执行时,Appium Desktop或Appium Server自动将WDA(WebDriverAgent)安装到模拟器上。
脚本执行步骤:
(1)启动模拟器Safari
(2)打开百度首页
(3)搜索框输入Appium
(4)点击百度一下
(5)关闭模拟器Safari
1、开启Appium服务(任选一种即可)
方式一:开启Appium Server
打开终端,输入 appium --address 127.0.0.1 --port 4723 --no-reset --session-override
如图所示,Appium服务开启。
方式二:开启Appium Desktop
打开Appium Desktop
如服务IP和端口默认的情况下,直接点击Start Server v1.6.5来开启Appium服务,如图所示。
2、执行测试脚本,鼠标右键Run As--->Java Application。
脚本执行步骤:
(1)启动真机Safari
(2)打开百度首页
(3)搜索框输入Appium
(4)点击百度一下
(5)关闭真机Safari
本文分享自 AllTests软件测试 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!