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();
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!