zoukankan      html  css  js  c++  java
  • 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 
  • 相关阅读:
    抗变与协变
    border-width实现博客园回复效果
    福利到!分享我的分页控件
    linq distinct 不够用了!
    sql server 使用nolock提升性能
    Graph-Based image segmentation method
    纹理特征提取【转】
    ROC曲线【转】
    LBP纹理特征[转自]
    SPAMS:稀疏建模工具箱
  • 原文地址:https://www.cnblogs.com/kaola8023/p/14381681.html
Copyright © 2011-2022 走看看