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 ...
随机推荐
- ObservableCollection
1)可以使绑定控件与基础数据源保持同步2)还可以在您添加.删除.移动.刷新或替换集合中的项目时引发 CollectionChanged 事件3)还可以在您的窗口以外的代码修改基础数据时做出反应4)相互 ...
- mac利用Synergy操作多台电脑
话说,我现在桌子上有3台电脑,但是我只有一个鼠标和键盘,我该怎么玩呢,就像win一样,可以外接一个显示器,鼠标到达了显示器边缘自动翻越到另一个显示器上,这个没问题,win已经实现了. 我今天推荐一款牛 ...
- [HTML5] Using the focus event to improve navigation accessibility (nextElementSibling)
For a menu item, when we tab onto it, we want this element get 'focus' event, so that the submenu wi ...
- easyui combotree模糊查询
技术交流QQ群:15129679 让EasyUI的combobox和combotree同时支持自定义模糊查询,在不更改其他代码的情况下,添加以下代码就行了: /** * combobox和combot ...
- nGrinder对监控机器收集自定义数据及源码分析
转载:https://blog.csdn.net/neven7/article/details/50782451 0.背景 性能测试工具nGrinder支持在无需修改源码的情况下,对目标服务器收集自定 ...
- 一、NoSQL入门概述
- Tomcat7出现HTTP Status 500 - java.lang.ClassCastException: org.apache.jasper.el.ELContextImpl cannot be cast to org.apache.jasper.el.ELContextImpl的解决
今天在Tomcat7上发布了一个war,过一阵子发现localhost:8080都进不去了.在浏览器输入http://localhost:8080出现如下内容: HTTP Status 500 - j ...
- 如何使用SubtitleWorkshop制作字幕
任意打开一段字幕文件 对于初学者而言还是最好打开一个带有中英字幕的视频文件(字幕是嵌入在视频文件里面的)然后一句一句照着写 先打开视频预览模式 再打开一段视频文件,并新建一个字幕文件 牢记几个快捷键 ...
- 高并发分布式环境中获取全局唯一ID[分布式数据库全局唯一主键生成]
需求说明 在过去单机系统中,生成唯一ID比较简单,可以使用MySQL的自增主键或者Oracle中的sequence, 在现在的大型高并发分布式系统中,以上策略就会有问题了,因为不同的数据库会部署到不同 ...
- redis 超时失效key 的监听触发
1. 事件通过 Redis 的订阅与发布功能(pub/sub)来进行分发,故需要订 阅 __keyevent@0__:expired 通道 0表示db0 根据自己的dbindex选择合适的数字 2. ...