appium操作微信公众号H5 web页面
安卓微信公众号的H5页面是webview,一般操作需要切换context。
在执行如下步骤,就能直接像识别native样识别webview
1、代码追加:
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("androidProcess", "com.tencent.mm:tools");
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
2、在微信任何对话框 发送 "//deletetbs"
appium操作微信H5
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Set;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.Test; import com.fc.htgl.utils.ConfigUtil; import io.appium.java_client.android.AndroidDriver; public class TestWechat {
public AndroidDriver<WebElement> driver;
public WebDriverWait wait = null;
public void apkStart(String udid, String packageName, String activityName, String appiumServer) { DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName", udid);
capabilities.setCapability("udid", udid);
// 设置每次运行不重新启动被测试app
capabilities.setCapability("noReset", "true");
capabilities.setCapability("fullReset", "false");
// 设置安卓系统版本
capabilities.setCapability("platformVersion", "6.0");
capabilities.setCapability("platformName", "Android");
// session 延迟时间
capabilities.setCapability("newCommandTimeout", 24000);
capabilities.setCapability("device", "selendroid");
// capabilities.setCapability("app", app.getAbsolutePath());
capabilities.setCapability("unicodeKeyboard", "True");
capabilities.setCapability("resetKeyboard", "True");
// 设置app的主包名和主类名 微信程序包名和activity 名
capabilities.setCapability("appPackage", packageName);
capabilities.setCapability("appActivity", activityName); ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("androidProcess", "com.tencent.mm:tools");
capabilities.setCapability(ChromeOptions.CAPABILITY, options); // 启动
try {
System.out.println("http://" + ConfigUtil.getBoxApkAppiumServer() + "/wd/hub");
driver = new AndroidDriver<WebElement>(new URL("http://" + appiumServer + "/wd/hub"), capabilities);
wait = new WebDriverWait(driver, 10);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
@Test
public void test(){
this.apkStart("G6N7MBIZJ7YHLZO7", "com.tencent.mm", "com.tencent.mm.ui.LauncherUI", "127.0.0.1:4723");
//点击公众号
driver.findElementByAndroidUIAutomator("text(\"sdfsdfsd\")").click();
//进入公众号的H5页面
driver.findElementByAndroidUIAutomator("text(\"sssss\")").click();
driver.findElementByAndroidUIAutomator("text(\"sfdfdfdf\")").click();
//微信h5 操作
driver.findElementByXPath("//android.widget.EditText[@content-desc='添加备注']").sendKeys("abababab");;
driver.findElementByXPath("//android.view.View[@content-desc='sdfsdfsdfsdf']").click(); Set<String> context = driver.getContextHandles();
for (String contextName : context) {
System.out.println(contextName); }
} }
appium操作微信公众号H5 web页面的更多相关文章
- 微信公众号h5页面alert去掉域名
h5页面内嵌到微信公众号提示信息alert的时候会显示域名,去掉域名显示重写alert方法: window.alert = function(name){ var iframe = document. ...
- 微信公众号H5支付遇到的那些坑
简史 官方文档说的很清楚,商户已有H5商城网站,用户通过消息或扫描二维码在微信内打开网页时,可以调用微信支付完成下单购买的流程. 当然,最近微信支付平台也加入了纯H5支付,也就是说用户可以在微信以外的 ...
- 使用Appium进行微信公众号自动化测试
查看Android的webview视图版本:手机链接电脑后在电脑Chrome打开页面chrome://inspect/#devices查看Android的Chrome内核版本 下载与该版本相对 ...
- 微信公众号H5支付
微信支付说明1.统一下单接口 统一支付接口: url: https://api.mch.weixin.qq.com/pay/unifiedorder 目的:通过此接口来创建预支付订单,获取订单支付需要 ...
- 基于APPIUM测试微信公众号的UI自动化测试框架(结合Allure2测试报告框架)
框架初衷 前两周组内的小伙伴跟我说她现在测试的微信公众号项目(保险)每次上新产品时测试起来很费时,存在大量的重复操作(点点点),手工测试每个产品可能需要半天到一天的时间,复杂的产品需要两天. 由于保险 ...
- 三星note4,微信公众号开发,页面闪退
在做微信公众号开发时,使用三星note4测试,有一个select框闪退的问题出现. 出现该问题的原因是该选择框,设置了appearance:none;属性.查找了官方解释是: 所有主流浏览器都不支持 ...
- 微信公众号H5用户授权
其实不是很难,总结起来就是: 1.微信公众号管理后台设置redirect_uri. 2.然后发起一个请求去重定向获取code,然后把获取到code之后重定向的URL放在获取code的URL中 3.获取 ...
- 微信公众号h5页面自定义分享
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- 微信公众号H5支付步骤
微信公众平台:https://mp.weixin.qq.com/ 进入 微信支付 管理>开通支付功能. 微信支付|商户平台: 设置安全目录:https://pay.weixin.qq.com/i ...
随机推荐
- PasswordlessAPI
passwordlessapiYOURLS允许API调用的老式的方法,使用用户名和密码参数(如果你的设置是私人的,很明显).如果担心将证书发送到野外,还可以使用秘密签名令牌进行API调用.签名的令牌你 ...
- Jacoco覆盖率工具使用调研
JaCoCo Java Code Coverage Library Jacoco是一个开源的覆盖率工具.Jacoco可以嵌入到Ant .Maven中,并提供了EclEmma Eclipse插件,也可以 ...
- 单页WEB应用(三),Chat聊天模块
Chat 聊天模块 这个模块应该就是该书全篇的唯一一个模块吧,后面差点儿全部的篇章都环绕这个模块去实现的,只是就通过这一个模块的实现和上线,也能体现单页应用开发到公布上线的整个过程,毕竟后面的数据.通 ...
- android google map v1 v2 v3 参考
V1,V2已经不被推荐使用,谷歌强烈推荐使用V3. 本人在选择时着实纠结了良久,现在总结如下: 对于V1,现在已经申请不到API KEY了,所以不要使用这个版本.这个是网址:https://devel ...
- VC操作MPP文件
1.背景简介 因需要对Office系列进行程序操作,特需要使用COM编程. Microsoft Project生成进度计划,office家族软件,文件后缀为.mpp. 具体信息见维基百科http:// ...
- [置顶] 【玩转cocos2d-x之二十】从CCObject看cocos2d-x的内存管理机制
原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/13765639 再看CCObject,剔除上节的拷贝相关,以及Lua脚本相关的 ...
- 栈的实现实例(C语言)
/* stack.h */ #ifndef _stack_h #define _stack_h struct stack_record; typedef struct stack_record *st ...
- 使用 Spring 2.5 TestContext 测试框架
Spring 2.5 TestContext 测试框架用于测试基于 Spring 的程序,TestContext 测试框架和低版本 Spring 测试框架没有任何关系,是一个全新的基于注解的测试框架, ...
- vue 钩子函数 使用async await
示例: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <tit ...
- 【转】Html.RenderPartial与 Html.RenderAction的区别
Html.RenderPartial与Html.RenderAction 这个两个方法都是用于把MVC用户控件嵌入到View中. Html.RenderPartial是直接将MVC用户控件嵌入到界面上 ...