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 
原文地址:https://www.cnblogs.com/kaola8023/p/14381681.html