控制计算器实现计算功能
1、appium+jdk的安装
参考文档:https://www.jianshu.com/p/1b959e0baae2
2、 解决 adb版本冲突问题
查看 genymotion的 adb版本
进入:GenymobileGenymotion ools,输入adb version
Ø 选择一致使用的 sdk,也就是和 Android studioSDK一致
ü settings→adb→usecustom
3、利用appium探测页面元素
--》查看设备名称
adb devices
--》 查看系统版本
adb shell getprop ro.build.version.release
--》 查看 App 名称和 App 启动项名称
adb shell dumpsys window w | findstr / | findstr name=
--》appium设置
{ "deviceName": "192.168.231.101:5555", "platformName": "Android", "platformVersion": "9", "appPackage": "com.android.calculator2", "appActivity": "com.android.calculator2.Calculator", "noReset": true }
--》探测
4、编写程序
public class TestGenymotion01 { private AndroidDriver driver; @Test public void test001() { //数字一 String numberA = "234"; //数字二 String numberB = "432"; //运算符 String plus = "op_add"; //等号 String equal = "eq"; //包名:id String package_id="com.android.calculator2:id/"; for(int i=0;i<numberA.length();i++) { driver.findElementById(package_id+"digit_"+numberA.charAt(i)).click(); } driver.findElementById(package_id+plus).click(); for(int i=0;i<numberB.length();i++) { driver.findElementById(package_id+"digit_"+numberB.charAt(i)).click(); } driver.findElementById(package_id+equal).click(); String result=driver.findElementById(package_id+"result").getText(); System.out.println("结果=="+result); Assert.assertEquals(result, "666"); } @BeforeClass public void beforeClass() { //创建DesiredCapabilities对象 //指定测试设备信息 DesiredCapabilities devices = new DesiredCapabilities(); //使用的移动设备或模拟器的种类,如 iPhone Simulator,iPad Simulator,Android Emulator,Galaxy S4 等 devices.setCapability("deviceName", "192.168.231.101:5555"); // 指定使用哪个移动操作系统平台,如 iOS,Android 或 FirefoxOS devices.setCapability("platformName","Android"); //指定移动操作系统版本 devices.setCapability("platformVersion","9"); // 指定 app 程序包名,即被测程序名 devices.setCapability("appPackage","com.android.calculator2"); devices.setCapability("appActivity","com.android.calculator2.Calculator"); //A new session could not be created的解决方法 devices.setCapability("appWaitActivity","com.android.calculator2.Calculator"); //每次启动时覆盖session,否则第二次后运行会报错不能新建session devices.setCapability("sessionOverride", true); //启动 App try { driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),devices); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @AfterClass public void afterClass() { driver.quit(); } }
--》读取文件中的数据
public class TestGenymotion02 { private AndroidDriver driver; @Test(dataProvider="getData") public void test001(String numberA,String operator,String numberB,String expected) { switch(operator) { case "+": operator="op_add"; break; case "-": operator="op_sub"; break; case "*": operator="op_mul"; break; case "/": operator="op_div"; break; default: operator="op_add"; break; } //等号 String equal = "eq"; //包名:id String package_id="com.android.calculator2:id/"; for(int i=0;i<numberA.length();i++) { driver.findElementById(package_id+"digit_"+numberA.charAt(i)).click(); } driver.findElementById(package_id+operator).click(); for(int i=0;i<numberB.length();i++) { driver.findElementById(package_id+"digit_"+numberB.charAt(i)).click(); } driver.findElementById(package_id+equal).click(); String result=driver.findElementById(package_id+"result").getText(); System.out.println("结果=="+result); Assert.assertEquals(result, expected); } @DataProvider public Object[][] getData() throws IOException{ //读取文档中的测试数据 List<String[]> rows = new ArrayList<String[]>(); BufferedReader br = new BufferedReader(new FileReader("e:\cal.txt")); String len; while((len=br.readLine())!=null) { String[] strs = len.split(" "); rows.add(strs); } br.close(); Object[][] data = new Object[rows.size()][]; for(int i=0;i<rows.size();i++) { data[i] = rows.get(i); } return data; } @BeforeClass public void beforeClass() { //创建DesiredCapabilities对象 //指定测试设备信息 DesiredCapabilities devices = new DesiredCapabilities(); //使用的移动设备或模拟器的种类,如 iPhone Simulator,iPad Simulator,Android Emulator,Galaxy S4 等 devices.setCapability("deviceName", "192.168.231.101:5555"); // 指定使用哪个移动操作系统平台,如 iOS,Android 或 FirefoxOS devices.setCapability("platformName","Android"); //指定移动操作系统版本 devices.setCapability("platformVersion","9"); // 指定 app 程序包名,即被测程序名 devices.setCapability("appPackage","com.android.calculator2"); devices.setCapability("appActivity","com.android.calculator2.Calculator"); //A new session could not be created的解决方法 devices.setCapability("appWaitActivity","com.android.calculator2.Calculator"); //每次启动时覆盖session,否则第二次后运行会报错不能新建session devices.setCapability("sessionOverride", true); //启动 App try { driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),devices); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @AfterClass public void afterClass() { driver.quit(); } }
控制浏览器实现搜索
1、genymotion设置联网
2、查看控件名称
--》查看设备名称
adb devices
--》 查看系统版本
adb shell getprop ro.build.version.release
--》 查看 App 名称和 App 启动项名称
adb shell dumpsys window w | findstr / | findstr name=
---》appium设置同上
{ "deviceName": "192.168.231.101:5555", "platformName": "Android", "platformVersion": "9", "appPackage": "com.android.quicksearchbox", "appActivity": "com.android.quicksearchbox.SearchActivity", "noReset": true }
--》抓取元素
--》代码
public class NewTest { AndroidDriver driver; @BeforeClass public void beforeClass() throws MalformedURLException { DesiredCapabilities device=new DesiredCapabilities(); device.setCapability("deviceName", "192.168.231.101:5555"); device.setCapability("platformName", "Android"); device.setCapability("platformVersion", "9"); device.setCapability("noReset", true); device.setCapability("appPackage", "com.android.quicksearchbox"); device.setCapability("appActivity", "com.android.quicksearchbox.SearchActivity"); device.setCapability("unicodeKeyboard", true); device.setCapability("resetKeyboard", true); driver=new AndroidDriver(new URL("http://localhost:4723/wd/hub"),device); } @Test public void test() throws Exception{ driver.findElementById("com.android.quicksearchbox:id/search_src_text").sendKeys("www.baidu.com"); driver.pressKeyCode(66); //Set<String> context=driver.getContextHandles(); //System.out.println(context); Thread.sleep(3000); driver.findElementById("org.chromium.webview_shell:id/url_field").clear(); Thread.sleep(3000); driver.findElementById("org.chromium.webview_shell:id/url_field").sendKeys("www.baidu.com"); driver.pressKeyCode(66); Thread.sleep(3000); driver.findElementById("index-kw").click(); driver.findElementById("index-kw").sendKeys("手机测试"); driver.pressKeyCode(66); Thread.sleep(3000); } @AfterClass public void afterClass() { driver.quit(); } }