Appium测试微信公众号
1. 我的appium版本是1.6.x,appium的java-client版本是java-client-5.0.0-BETA4,selenium版本是3.0.1,jdk1.8,微信版本6.5.13
2. 执行前必须先开启微信的debug模式,如何开启请查看https://x5.tencent.com/tbs/guide/debug/season1.html
3. 开启后即可用chrome://inspect 查看公众号界面的元素信息
4. 准备一个2.20版本的chromedriver.exe文件,下载地址 http://chromedriver.storage.googleapis.com/index.html?path=2.20/ 下载以后放在任何位置都可以
4. 对应的Appium脚本如下:
4.1 初始化drvier代码
DesiredCapabilities caps = new DesiredCapabilities();
// 表示我们的设备名字,在安卓下这个参数必须有,但是值可以随便写
caps.setCapability(MobileCapabilityType.DEVICE_NAME, "xxx");// “devicesName”
// 表示appium服务的session过期时间,单位是秒,默认是60秒
caps.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, 600);
// 表示在安装的时候不对应用进行重签名操作,因为有的应用在重签名之后就无法正常使用
caps.setCapability(AndroidMobileCapabilityType.NO_SIGN, true);
// 下面两项是用来使用appium自带的unicode输入法,来隐藏键盘并且支持中文输入
caps.setCapability(AndroidMobileCapabilityType.UNICODE_KEYBOARD, true);
caps.setCapability(AndroidMobileCapabilityType.RESET_KEYBOARD, true);
caps.setCapability(MobileCapabilityType.UDID, "不要照抄,这里你设备的udid");
File chromedriver=new File("X:/不要照抄,这里写你自己的路径/chromedriver2.20.exe");
caps.setCapability(AndroidMobileCapabilityType.APP_PACKAGE, "com.tencent.mm");
caps.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY, "com.tencent.mm.ui.LauncherUI");
caps.setCapability(MobileCapabilityType.NO_RESET, true);
caps.setCapability(AndroidMobileCapabilityType.RECREATE_CHROME_DRIVER_SESSIONS, true);
caps.setCapability(AndroidMobileCapabilityType.CHROMEDRIVER_EXECUTABLE, chromedriver.getAbsolutePath());
ChromeOptions options=new ChromeOptions();
options.setExperimentalOption("androidProcess", "com.tencent.mm:tools");
caps.setCapability(ChromeOptions.CAPABILITY, options);
AndroidDriver driver = new AndroidDriver(
new URL("http://127.0.0.1:4723/wd/hub"), caps);
4.2 脚本代码:
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.findElement(By.xpath("//*[@text='PROWISER']")).click();
driver.findElement(By.xpath("//*[@text='行程攻略']")).click();
driver.findElement(By.xpath("//*[@text='推送图文']")).click();
Thread.sleep(5000);
Set contexts=driver.getContextHandles();
//这里是用来打印你当前的context的,如果看不到tencent的webview,说明你的debug开的有问题
for(String s:contexts){
System.out.println(s);
}
//切换driver到公众号的context上
driver.context("WEBVIEW_com.tencent.mm:tools");
driver.findElement(By.xpath("//*[text()='更多']")).click();
Thread.sleep(5000);
//当你的公众号操作有页面切换时,很可能需要先切回原生的context再切到webview上才能继续执行
driver.context("NATIVE_APP");
driver.context("WEBVIEW_com.tencent.mm:tools");
driver.findElement(By.xpath("//*[@title='芦笋淮山百合炒鲜虫草']")).click();
Thread.sleep(5000);
driver.quit();
转载:http://ask.testfan.cn/article/1112