当前位置: 首页 > news >正文

黄冈网站推广wordpress demo

黄冈网站推广,wordpress demo,商城站人工售票时间表,陈铭生我来找你了目 录#xff1a; 1. 小程序自动化方案1.1 小程序的基本构成1.2 原生组件定位之UiSelector1.2.1 原生组件定位之UiSelector1.2.2 web元素定位1.3 小程序自动化准备1.3.1 安装appium1.3.2 安装adb tools1.3.3 chromedriver.exe版本1.3.4 打开手机的开发者选项1.3.5 打开webvie…目 录 1. 小程序自动化方案1.1 小程序的基本构成1.2 原生组件定位之UiSelector1.2.1 原生组件定位之UiSelector1.2.2 web元素定位1.3 小程序自动化准备1.3.1 安装appium1.3.2 安装adb tools1.3.3 chromedriver.exe版本1.3.4 打开手机的开发者选项1.3.5 打开webview的debug模式1.3.6 关于context切换1.3.7 关于windowHandles1.3.8 常见的问题 2. 微信小程序自动化2.1 开启微信webview debug模式2.2 开始你的自动化demo2.2.1 启动appium服务2.2.2 确认小程序的androidProcess参数2.2.3 爱奇艺视频小程序demo 3. 百度小程序自动化3.1 安装百度智能小程序调试包3.2 确认androdProcess进程名3.3 百度小程序demo 4. 小程序自动化库4.1 百度小程序接口4.2 微信小程序接口4.3 安卓常用操作接口Device4.4 命令行操作接口Command4.5 图像识别AirCv1. 小程序自动化方案 目前小程序自动化主要有以下三种方案 Appium框架 【官网】http://appium.io/摩拜小程序自动化python版美团小程序自动化java版网易的airtest框架airtest微信小程序教程腾讯的Fast-AutoTesthttps://github.com/Tencent/FAutoTestFAT(Fast-AutoTest) —专业服务于微信H5/小程序UI自动化测试 网易的Airtest在图像识别元素上做的很不错但爱奇艺视频小程序固定的UI元素非常少大部分都是视频封面图应用自动化比较受限制。 腾讯的FAT是腾讯测试团队刚开源的框架粗略看了下代码可能对腾讯自家的APP支持的比较好比如微信、qq浏览器等但如果要测试其他的小程序比如百度/支付宝小程序可能还需要一些修改源代码的成本目前社区也不太活跃对于其执行效率宣传说是比Appium要高但我暂时未写demo详细去对比具体性能数据未知。 最终还是选择了appium框架再加Airtest图像识别功能辅助测试appium社区相对来说活跃度较高维护团队稳定。 1.1 小程序的基本构成 小程序融合了Native app和web-app的特性属于混合型应用Hybrid App。以爱奇艺视频微信小程序为例上面的TopActionBar和下边的Bottom Action Bar是属于原生的组件而中间是由webview渲染的属于web应用。 image.png 对于安卓原生的UI组件我们可以直接用UIAutomator查看元素属性如下图所示 image.png 1.2 原生组件和web元素定位 1.2.1 原生组件定位之UiSelector UiSelector对于各种原生组件属性的匹配有以下四种匹配关系 完全匹配包含匹配正则匹配起始匹配 每个原生组件有很多属性如resource-id、text、class、content-desc等这些是比较常用的还有如下属性 属性值 值类型 说明 index int 索引同级组件的下标从0开始计 instance int 界面中同一类View的所有实例的下标从0开始计 class String 组件的类名如 android.widget.TextView package String 包名 Content-desc String 描述 checkable boolean 是否可选一般只对 单选或 复选框有用。 checked boolean 单选或 复选框 是否被选中 clickable boolean 是否可点击 enabled boolean 是否可操作如 按钮置灰不可操作状态 focusable boolean 是否可获取焦点 focused boolean 是否获取到焦点 Scrollable boolean 是否可滚动一般是list Long-clickable boolean 是否可长按 password boolean 是否密码 selected boolean 是否具有背景选择属性如按钮点击后背景色变化 bounds Rect 坐标如 [366,999][708,1197]表示控件的矩形区域左上和右下坐标点appium中查找原生组件的方法可用findElementByAndroidUIAutomator以下会省略该方法名直接写UiSelector driver.findElementByAndroidUIAutomator(new UiSelector().text(\爱奇艺视频\))ID属性resource-id定位 //resourceId全匹配 new UiSelector().resourceId(com.baidu.searchbox.remotedebug:id/baidu_searchbox) //正则匹配baidu_searchbox结尾 new UiSelector().resourceIdMatches(.*baidu_searchbox) //包含匹配包含SearchTextInput的组件 new UiSelector().resourceIdContains(SearchTextInput) //起始匹配 new UiSelector().resourceIdStartsWith(com.baidu.searchbox.remotedebug)文本属性text定位 //通过文本定位 driver.findElementByAndroidUIAutomator(new UiSelector().text(\爱奇艺视频\)) //正则匹配查找未登录或我的 new UiSelector().textMatches(未登录|我的) new UiSelector().textMatches(爱奇艺.*) //包含我的 new UiSelector().textContains(我的) //以首开头 new UiSelector().textStartsWith(首) //查找界面中文本为“微信红包”的第3个组件 new UiSelector().text(微信红包).instance(2);描述属性content-desc //通过文本定位 driver.findElementByAndroidUIAutomator(new UiSelector().description(\更多\)) new UiSelector().descriptionMatches(更多\w) new UiSelector().descriptionContains(更多) new UiSelector().descriptionStartsWith(更多)其他属性 //类名为android.widget.RelativeLayout下标index为5的 new UiSelector().className(android.widget.RelativeLayout).index(5); //包名为com.android.deskclock的第五个组件 new UiSelector().packageName(com.android.deskclock).instance(5) //checkable属性为true的 new UiSelector().checkable(true); new UiSelector().longClickable(true).index(4); 节点关系复杂定位 - 父:Parent - 子: Children - 同胞: Sibling - 先辈: Ancestor - 后代:Descendant //childselector查找子类 new UiScrollable(new UiSelector().scrollable(true) .childSelector(new UiSelector().text(Android)))//formParent查找父类 new UiSelector().resourceId(com.baidu.searchbox.remotedebug:id/search_list) .fromParent(new UiSelector().className(android.widget.LinearLayout).index(1));1.2.2 web元素定位 文档较多不列举 1.3 小程序自动化准备 JAVA: 1.8node js : 10.14.2adb: 1.0.40appium : 1.8.1 1.3.1 安装appium 安装node环境 $ node -v v10.14.2$ npm -v 6.4.1利用npm全局安装appium npm install appium1.8.1 -g #安装需要一定时间安装完成后 $ appium -v 1.8.11.3.2 安装adb tools 参考Android测试环境搭建 $ adb --version Android Debug Bridge version 1.0.40 Version 4986621 Installed as D:\Program Files\androidsdk\Android\Sdk\platform-tools\adb.exe1.3.3 chromedriver.exe版本 appiumDriver切换webview context需要用到chromedriver每个app使用的webview版本可能不同所以需要不同版本的chromedriver与之对应。详见http://appium.io/docs/cn/advanced-concepts/chromedriver/ 1.3.4 打开手机的开发者选项 每个手机开启的方式不一样自行搜索。 小米手机需要打开开发者选项、安全模式、关闭miui优化 开启后通过命令adb devices验证如果能发现设备说明开启成功 ceshiDESKTOP-UE2D6JR F:\android-perf-recorderadb devices List of devices attached ce96dc1b device d24c3bcc deviceadb无法识别的问题排查 确认数据线没问题按教程https://jingyan.baidu.com/article/ce09321b5b76642bff858f31.html还是不行的话按照教程https://blog.csdn.net/zhouyingge1104/article/details/42145429还是不行的话重新弄一个androidsdk吧。 1.3.5 打开webview的debug模式 要实现小程序的自动化一个非常重要的步骤就是打开app webview的debug模式。但是app一般不会提供debug模式。验证debug模式是否开启可以通过如下步骤 打开APP的小程序数据线连接至电脑 PC打开chrome浏览器输入chrome://inspect image.png   找到小程序的webview点击inspect可看到小程序界面   image.png 如果能看到小程序使用的webview那么表明该webview的debug已开启 1.3.6 关于context切换 appium原本是设计为NATIVE_APP的自动化为了支持混合应用或APP里的webv页面测试所以有这一概念。默认拉起app后进入的NATIVE_APP一般还会有WEBVIEW_xxx可以查看当前所有的contextpython版本 driverwebdriver.Remote(http://localhost:4723/wd/hub, desired_caps) driver.contexts [NATIVE_APP, WEBVIEW_com.tencent.mm:tools, WEBVIEW_com.tencent.mm:toolsmp] driver.switch_to.context(uWEBVIEW_com.tencent.mm:tools) driver.page_source !DOCTYPE htmlhtml xmlnshttp://www.w3.org/1999/xhtml ......1.3.7 关于windowHandles windowhandle可以看成是chrome里一个标签页小程序每跳转一个新页面会生成一个新的window handle但driver并不会自动切换新的window所以每次查找元素前都需要手动切换到相应的window否则会报no such element 目前能想到的笨办法是找一个能标识每个页面的唯一性元素然后遍历每个页签如果page_source有该元素则切到该页签 driver.window_handles [CDwindow-56b52630-ffcc-4b1f-88cc-c26d4b5e10ed, CDwindow-3168289f-c448-4597-bf21-cf825fd29b5c, CDwindow-4a0d4647-27a5-4cfa-92a7-357ee6901c2a] driver.switch_to.window(CDwindow-3168289f-c448-4597-bf21-cf825fd29b5c) driver.current_window_handle CDwindow-3168289f-c448-4597-bf21-cf825fd29b5c driver.title 中国新说唱官方投票通道 driver.switch_to.window(CDwindow-4a0d4647-27a5-4cfa-92a7-357ee6901c2a) driver.titledriver.switch_to_window(CDwindow-56b52630-ffcc-4b1f-88cc-c26d4b5e10ed) driver.title 百度一下 1.3.8 常见的问题 如何解决打开页面路径太长的问题 由于微信小程序没有类似的H5的url所以得通过点击路径打开目标页面路径长容易导致稳定性差。解决办法是可通过执行wx api来直接跳转页面因为在小程序内开发也是直接调用wx.navigateTo来跳转的所以想到能不能通过js executor来执行wx api image.png   元素的点击方法无反应 可以找到元素但调用元素的点击方法无反应原因是有的微信元素监听的是tap事件不是click事件。 image.png   元素getLocation接口获取的坐标位置不准   image.png 如何校验视频正在播放 image.png   切换context一直卡住appium报chrome not reachable 确认webview的debug模式开启确认chrome://inspect可以看到小程序确认androidProcess正确微信小程序的话确认是从搜一搜入口进去查找appium的日志看报错 查找元素时报no sucn element 打印pageSource看是否有相应元素打印出所有windowHandles遍历所有看是否有相应元素如果没有那就不是小程序的webview context确认androidProcess是否正确 chrome version must be xx chromedriver版本与小程序的webview版本不匹配解决 启动appium时指定--chromedriver-executable参数或者将appium的默认chromedriver.exe版本替换 微信点击搜一搜报错 appium 1.8.1java-client6.1.0 driver.findElementByAndroidUIAutomator(text(\搜一搜\)).click()该行代码报UiAutomator exited unexpectedly with code 4294967295 https://testerhome.com/topics/13496不是缺少/data/local/tmp/AppiumBootstrap.jarhttps://blog.csdn.net/Sily_Z/article/details/80584750重启手机也不是很好使 看日志是堆栈溢出[UIAUTO STDOUT] INSTRUMENTATION_RESULT: shortMsgjava.lang.StackOverflowError 改为用adb点击搜一搜也是一样的结果。https://www.cnblogs.com/chongyou/p/5263198.html说前面有程序没结束所以手动清理了后台的微信进程。并设置微信不能一直保持后台运行。还是没解决。解决换为uiautomator2版本。 uiautomator2一直提示安装uiautomator2.server和uiautomator2.server.test解决小米手机的话打开usb安装并关闭miui优化 或者修改uiautomator2-server源码https://blog.csdn.net/hszxd479946/article/details/78900982 点击报错java.lang.StackOverflowError java.lang.StackOverflowError: stack size 1037KB\n\tat android.util.SparseArray.gethttps://github.com/appium/appium/issues/10204 想拉微信却拉起了chrome浏览器解决加上以下配置 caps.setCapability(MobileCapabilityType.BROWSER_NAME,);uiautomator2报签名错误 java.lang.SecurityException: Permission Denial: starting instrumentation ComponentInfo{io.appium.uiautomator2.server.test/androidx.test.runner.AndroidJUnitRunner} from pid19303, uid19303 not allowed because package io.appium.uiautomator2.server.test does not have a signature matching the target io.appium.uiautomator2.server原因是安装了不同的uiautomator版本卸载原来的就行。解决https://stackoverflow.com/questions/3082780/java-lang-securityexception-permission-denial adb uninstall io.appium.uiautomator2.server.test2. 微信小程序自动化 2.1 开启微信webview debug模式 注意 微信6.7.3版本时代webview是57版本此时可通过如下方法打开debug但必须从微信搜一搜入口打开小程序才可以切换webview的context从其他入口均报chrome not reachable微信6.7.3时代安卓8.0系统57版本对应的chromedriver有bug也包chrome not reachable微信升级7.0后webview升级到66版本此时搜一搜入口也无法切换context目前只有6.6.7以下版本可开启debug模式进行自动化 微信打开http://debugx5.qq.comx5调试页面点击信息然后勾选【打开TBS内核Inspector调试功能】勾选后重启微信 image.png 遇到低版本无法登录的问题 解决暂时未找到貌似跟微信账号还有关系有的能登有的不行 手机通过数据线连接电脑adb devices命令验证连接成功 微信扫码打开爱奇艺视频小程序chrome浏览器输入chrome://inspect看能否找到小程序的webivew点击inspect可查看小程序页面。 2.2 开始你的自动化demo chrome inspect成功后恭喜你已经成功准备好环境下一步便可开始撸代码了 2.2.1 启动appium服务 启动appium服务比较简单但得注意appium自带的chromedriver版本可能与微信的webview无法匹配。详见appium与chromedriver 因此在启动时最好带--chromedriver-executable参数目前微信webview版本是66可用2.36版本的chromedriver启动服务命令如下 C:\Users\zengzhihuaappium --chromedriver-executableD:\chromedrivers\chromedriver_2.36.exe --log-leveldebug (node:632) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead. [Appium] Welcome to Appium v1.8.1 [Appium] Non-default server args: [Appium] chromedriverExecutable: D:\chromedrivers\chromedriver_2.36.exe [Appium] Appium REST http interface listener started on 0.0.0.0:4723如果没有报错就ok了默认开启4723端口 2.2.2 确认小程序的androidProcess参数 appium进行混合应用的自动化需要androidProcess参数我理解是小程序在android系统中的进程名获取方法如下 打开爱奇艺视频小程序运行在前端 输入adb shell进入adb命令行模式如果是多个设备需加-s参数 输入dumpsys activity top|grep ACTIVITY查看进程号pid 输入ps pid, pid为上一步获取 $ adb shell # 打开小程序然后输入以下命令查看当前活动的进程号 shellPD1621:/ $ dumpsys activity top|grep ACTIVITYACTIVITY com.tencent.mm/.plugin.appbrand.ui.AppBrandInToolsUI ad729c6 pid28902 # 查看当前进程号28902的进程信息进程名为com.tencent.mm:tools。shellPD1621:/ $ ps 28902 USER PID PPID VSIZE RSS WCHAN PC NAME u0_a227 28902 669 1900832 246896 00000000 R com.tencent.mm:tools shellPD1621:/ $并不是每次都是com.tencent.mm:tools貌似跟打开小程序的入口有关有的是com.tencent.mm:toolsmp还有的com.tencent.mm:appbrand0 或 com.tencent.mm:appbrand1 2.2.3 爱奇艺视频小程序demo 目前打开小程序必须从首页的搜索按钮或者发现页的搜一搜搜索爱奇艺视频小程序然后点击切换到小程序TAB点击第一个链接一般第一个链接便是 /*** Created by zengzhihua on 2019/3/30.*/ import io.appium.java_client.MobileElement; import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.remote.AndroidMobileCapabilityType; import io.appium.java_client.remote.MobileCapabilityType;import java.net.MalformedURLException; import java.net.URL;import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.remote.DesiredCapabilities;public class WeXinTest {static AndroidDriverMobileElement driver null;public static DesiredCapabilities getDefaultCapabilities() {DesiredCapabilities caps new DesiredCapabilities();ChromeOptions chromeOptions new ChromeOptions();chromeOptions.setExperimentalOption(androidProcess, com.tencent.mm:tools);caps.setCapability(ChromeOptions.CAPABILITY, chromeOptions);caps.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, 1200);caps.setCapability(MobileCapabilityType.PLATFORM_NAME, Android);caps.setCapability(MobileCapabilityType.DEVICE_NAME, 34c2ca44);caps.setCapability(MobileCapabilityType.FORCE_MJSONWP, true);caps.setCapability(AndroidMobileCapabilityType.APP_PACKAGE, com.tencent.mm);caps.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY, .ui.LauncherUI);caps.setCapability(showChromedriverLog, true);caps.setCapability(MobileCapabilityType.AUTOMATION_NAME, uiautomator2);caps.setCapability(noReset, true);caps.setCapability(unicodeKeyboard, true);caps.setCapability(resetKeyboard, true);caps.setCapability(MobileCapabilityType.CLEAR_SYSTEM_FILES, true);caps.setCapability(MobileCapabilityType.BROWSER_NAME,); // caps.setCapability(chromedriverExecutableDir, chromeDriverDir); // caps.setCapability(chromedriverChromeMappingFile, D:\\minidrivers\\chromeDriverMapping.json); // caps.setCapability(MobileCapabilityType.BROWSER_NAME,); // caps.setCapability(AndroidMobileCapabilityType.AUTO_GRANT_PERMISSIONS, true);return caps;}public static void main(String[] args) throws Exception {DesiredCapabilities desired_capabilities getDefaultCapabilities();try {driver new AndroidDriver(new URL(http://127.0.0.1:4723/wd/hub),desired_capabilities);String searchIconSelector new UiSelector().description(\搜索\);driver.findElementByAndroidUIAutomator(searchIconSelector).click();driver.findElementByAndroidUIAutomator(text(\搜索\)).sendKeys(爱奇艺视频小程序);driver.findElementByAndroidUIAutomator(text(\小程序、公众号、文章、朋友圈和表情等\).click();Thread.sleep(2000);//点击方法可切换到webview查找元素点击。clickByPointPercent方法是根据坐标百分比点击clickByPointPercent(30, 15); //点击小程序标签Thread.sleep(2000);clickByPointPercent(26, 26); //点击打开小程序一般第一个即是目标小程序Thread.sleep(5000);System.out.println(driver.getContextHandles());System.out.println(driver.getContext());driver.context(WEBVIEW_com.tencent.mm:tools);System.out.println(driver.getWindowHandles());System.out.println(driver.getPageSource());} catch (MalformedURLException e) {e.printStackTrace();}} } 3. 百度小程序自动化 百度小程序的自动化总体类似只是需要下载百度的调试包。调试包可下载百度小程序开发者工具然后点击远程调试会自动安装百度智能小程序的调试包。 3.1 安装百度智能小程序调试包 手机百度调试包 链接https://pan.baidu.com/s/1L1HwW7yYoZ1LlKY7q_KwPA 提取码khef 百度智能小程序调试包下载地址 链接https://pan.baidu.com/s/1tQ3ddlSctowJ_NfV7GjmmA 提取码rniz 3.2 确认androdProcess进程名 3.3 百度小程序demo 打开小程序方法从首页搜索“爱奇艺视频”搜索联想词第一个便是小程序点击便可打开 /*** Created by zengzhihua on 2019/3/30.*/ import io.appium.java_client.MobileElement; import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.remote.AndroidMobileCapabilityType; import io.appium.java_client.remote.MobileCapabilityType;import java.net.MalformedURLException; import java.net.URL;import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.remote.DesiredCapabilities;public class WeXinTest {static AndroidDriverMobileElement driver null;public static DesiredCapabilities getDefaultCapabilities() {DesiredCapabilities caps new DesiredCapabilities();ChromeOptions chromeOptions new ChromeOptions();chromeOptions.setExperimentalOption(androidProcess, com.baidu.searchbox.remotedebug:aiapps0);caps.setCapability(ChromeOptions.CAPABILITY, chromeOptions);caps.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, 1200);caps.setCapability(MobileCapabilityType.PLATFORM_NAME, Android);caps.setCapability(MobileCapabilityType.DEVICE_NAME, DEVICE_NAME);caps.setCapability(MobileCapabilityType.FORCE_MJSONWP, true);caps.setCapability(MobileCapabilityType.AUTOMATION_NAME, uiautomator2);caps.setCapability(MobileCapabilityType.NO_RESET, true);caps.setCapability(MobileCapabilityType.CLEAR_SYSTEM_FILES, true);caps.setCapability(MobileCapabilityType.BROWSER_NAME,);caps.setCapability(unicodeKeyboard, true);caps.setCapability(resetKeyboard, true);caps.setCapability(showChromedriverLog, true);caps.setCapability(AndroidMobileCapabilityType.APP_PACKAGE, APP_PACKAGE);caps.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY, APP_ACTIVITY); // caps.setCapability(chromedriverExecutableDir, chromeDriverDir); // caps.setCapability(chromedriverChromeMappingFile, D:\\minidrivers\\chromeDriverMapping.json); // caps.setCapability(AndroidMobileCapabilityType.AUTO_GRANT_PERMISSIONS, true); // caps.setCapability(AndroidMobileCapabilityType.VERSION, 6.0);return caps;}public static void main(String[] args) throws Exception {DesiredCapabilities desired_capabilities getDefaultCapabilities();try {driver new AndroidDriver(new URL(http://127.0.0.1:4723/wd/hub),desired_capabilities);String searchInputResourceId com.baidu.searchbox.remotedebug:id/baidu_searchbox;driver.findElementByAndroidUIAutomator(searchInputResourceId).click();Thread.sleep(2000);String searchEditTextInputResourceId com.baidu.searchbox.remotedebug:id/SearchTextInput;driver.findElementByAndroidUIAutomator(searchEditTextInputResourceId).sendKeys(appName);Thread.sleep(2000);String miniProgramTitleResourceId com.baidu.searchbox.remotedebug:id/suggestion_item_title;driver.findElementByAndroidUIAutomator(miniProgramTitleResourceId).click();Thread.sleep(3000);System.out.println(driver.getContextHandles());System.out.println(driver.getContext());driver.context(WEBVIEW_com.tencent.mm:tools);System.out.println(driver.getWindowHandles());System.out.println(driver.getPageSource());} catch (MalformedURLException e) {e.printStackTrace();}} }4. 小程序自动化库 在appium的基础上进行了简单的封装同时加入了一点图像识别功能解决难以定位的一些元素。 image.png 4.1 百度小程序接口 提供百度小程序的一些常用操作方法 import com.iqiyi.qa.minidrivers.BaiduDriver; import org.openqa.selenium.WebElement;import java.net.URL;/*** Created by zengzhihua on 2019/1/29.*/ public class BaiduDemo {public static void main(String[] s) throws Exception {//构造函数//1.自启动默认的appium服务; 2.自选择连接的设备并拉起百度智能小程序app//BaiduDriver baiduDriver new BaiduDriver();//1.手动启动appium服务//BaiduDriver baiduDriver new BaiduDriver(new URL(http://127.0.0.1:4723/wd/hub));//1..指定连接的设备id//BaiduDriver baiduDriver new BaiduDriver(ce96dc1b);//1.手动启动appium服务2.指定连接的设备id//BaiduDriver baiduDriver new BaiduDriver(new URL(http://127.0.0.1:4723/wd/hub),ce96dc1b);//其他构造函数//public BaiduDriver(AppiumDriverLocalService service, Capabilities desiredCapabilities);//public BaiduDriver(AppiumServiceBuilder builder, Capabilities desiredCapabilities);//public BaiduDriver(Capabilities desiredCapabilities);//打开百度小程序baiduDriver.openMiniProgram(爱奇艺视频);//查找native原生控件WebElement mineTabEle baiduDriver.findElementByAndroidUIAutomator(new UiSelector().textMatches(\未登录|我的\));baiduDriver.findElementByAndroidUIAutomator(new UiSelector().textMatches(\未登录|我的\)).click();baiduDriver.pause(3);//baiduDriver.findElementByAndroidUIAutomator(new UiSelector().description(\更多\)).click();baiduDriver.findElementByAndroidUIAutomator(text(\爱奇艺视频\)).click();baiduDriver.pause(2);//点击坐标baiduDriver.clickByPoint(500,500);//按坐标滑动baiduDriver.swipe(100,1500,600,1500);//点击坐标百分比baiduDriver.clickByPointPercent(80,95);System.out.println(baiduDriver.getWindowSize().getWidth());System.out.println(baiduDriver.getWindowSize().getHeight());//截图保存默认图片路径baiduDriver.getScreenShotAs();String viewMoreTmplPath E:\\projects\\uiauto-miniprogram\\images\\templates\\openIqiyiBanner.png;//按照模板图片查找图片元素ImgElement imgEle baiduDriver.findElementByImg(viewMoreTmplPath);//点击图片元素imgEle.click();//返回上一页baiduDriver.goBack();baiduDriver.pause(2);//返回首页baiduDriver.goHome();baiduDriver.pause(2);//最小化百度小程序baiduDriver.closeMiniProgram();//切换至百度小程序webviewbaiduDriver.switchToWebview();//切换至native contextbaiduDriver.switchToNative();//退出百度baiduDriver.quit();//baiduDriver.getScreenShotAs(E:\\screen.png);//System.out.print(baiduDriver.getContext());//baiduDriver.context(WEBVIEW_com.baidu.searchbox.remotedebug:aiapps0);//baiduDriver.getScreenShotAs(E:\\screen2.png);} }4.2 微信小程序接口 需安装微信6.6.5版本高于此版本无法开启tbs调试chrome://inspect无法成功提供微信小程序的一些常用操作方法 import com.iqiyi.qa.minidrivers.WxDriver;import java.net.URL;/*** Created by zengzhihua on 2019/1/29.*/ public class WxDemo {public static void main(String[] s) throws Exception{ // WxDriver wxDriver new WxDriver(); // WxDriver baiduDriver new WxDriver();WxDriver wxDriver new WxDriver(new URL(http://127.0.0.1:4723/wd/hub));wxDriver.pause(3); // wxDriver.openMiniProgramFromSearch(aiqiyishipin); // WxDriver wxDriver new WxDriver();wxDriver.openMiniProgram(周黑鸭外卖);wxDriver.pause(2);wxDriver.clickByPoint(500,500);wxDriver.clickByPointPercent(80,95);System.out.println(wxDriver.getWindowSize().getWidth());System.out.println(wxDriver.getWindowSize().getHeight());wxDriver.getScreenShotAs();String viewMoreTmplPath E:\\projects\\uiauto-miniprogram\\images\\templates\\openIqiyiBanner.png; // wxDriver.findElementByImg(viewMoreTmplPath).click();wxDriver.goBack();wxDriver.pause(2);wxDriver.goHome();wxDriver.pause(2);wxDriver.closeMiniProgram();wxDriver.quit();} }4.3 安卓常用操作接口Device 封装安卓设备的常用方法 import com.iqiyi.qa.device.AndroidDevice;public class TestDevice {public static void main(String[] args) throws Exception{Device device new AndroidDevice();//全屏截图device.getScreenShotAs(E:\\1.png);//执行adb shell 命令String output device.executeShellCommand(wm size);//获取当前的ACTIVITYString act device.getCurrentActivity();if (!device.isAppInstall(adbkeyboard)){device.installPackage(E:\\projects\\uiauto-miniprogram\\src\\main\\resources\\ADBKeyboard.apk);}//判断是否安装adb输入法boolean isExist device.isAdbKeyboardInstall();//安装adb输入法device.installPackage(ADBKeyboard.apk);//设置adb输入法device.setAdbkeyboard();//adb输入中文device.inputText(小程序);//获取手机屏幕尺寸Dimension d device.getWindowSize();System.out.println(device.dimension.getHeight());System.out.println(device.dimension.getWidth());//点击坐标device.clickByPoint(500, 500);//点击百分比坐标device.clickByPointPercent(95, 95);device.inputText(爱奇艺视频);AndroidDevice.quit();} }4.4 命令行操作接口Command 执行一些cmd或者shell命令并拿到返回结果 import com.iqiyi.qa.command.Command;public class TestCommand {public static void main(String[] args) throws Exception{String cmdString adb shell dumpsys activity top;Command command new Command(cmdString);try {command.execute();String output command.getStdOut();String[] outputLines output.split(\n);for (int i0;ioutputLines.length;i) {String line outputLines[i];if (line.contains(ACTIVITY)) {String pid line.split(pid)[1].replace(\n, );Command command1 new Command(adb shell ps pid);command1.execute();String output1 command1.getStdOut();String[] outputArray output1.replace(\n, ).split( );String processName outputArray[outputArray.length-1];System.out.println(processName);break;}}} catch (InterruptedException | IOException e) {e.printStackTrace();}} }4.5 图像识别AirCv 简单的opencv封装根据给定的模板图片在目标图片一般是屏幕截图中进行匹配匹配成功后返回对应的坐标点然后可以根据坐标点可用device接口对应的操作 import com.iqiyi.qa.aircv.AirCV;public class TestCv {private static float defaultDegree 0.9f;public static void main(String[] args) throws Exception{String screenShotPath E:\\projects\\uiauto-miniprogram\\images\\screenshots\\2019-02-26\\20190226-140934798.png;String templatePath E:\\projects\\uiauto-miniprogram\\images\\templates\\openIqiyiBanner.png;//在screenShotPath图片上查找templatePath模板图片相似度最小90%返回匹配的坐标AirCV.getMatchTemplateLoc(screenShotPath, templatePath, 0.9f);} }
http://www.dnsts.com.cn/news/133038.html

相关文章:

  • 众筹网站哪家好专门做汽车配件的网站
  • 济宁住房和城乡建设厅网站靖州建设局网站
  • 深圳市中医院优化模型的推广
  • 网站架构原理友情链接seo
  • 网站 板块 模块网站培训费用
  • 珠海东莞网站建设免费ppt模板免费网站
  • 营销型网站建设价格sku电商是什么意思
  • 网站怎么推广效果好一点呢什么企业需要网站建设
  • 福州网站提升排名乐清信息网
  • 中国建设银行网站u盾修改密码辽宁省住房和城乡建设厅网站打不开
  • 17做网站广州新塘滕滕州网站建设
  • 网站栏目设置完整度建设网站建设的项目方案
  • 3营销型网站建设工业网站开发商
  • 做网站好的网络公司常州市建设工程网站
  • 用手机可以做网站嘛怎么样查询网站被挂黑链
  • 邢台网站建设公司哪家好一点网络服务提供者接到权利人的通知后
  • 东莞制作网站的联系方式html视频播放器
  • 沧州网站建设公司排名大数据营销案例
  • 自己建网站要花多少钱锡林浩特市长安网站 建设初步方案
  • 老域名网站不收录专门做旅游的网站有哪些
  • 网站上的分享wordpress抱歉您不能上传文件
  • 武进网站建设价位网站开发的职业规划
  • app 排名网站做植物网站
  • 凡科做网站给后台的吗环保部网站官网建设项目限批办法
  • 昆山自适应网站建设wordpress query_posts 浏览量
  • 盐城网站建设多少钱北京协会网站建设
  • 谷歌网站优化工具安防公司网站模板
  • 洛阳有没有做家教的网站服装公司介绍模板
  • 关于icp备案信息中注销网站的通知深圳移动网站建设
  • 洛阳市城市建设网站南通网站排名方法