首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

美团App页面视图可测性改造实践

美团App的页面特点 自动化测试实施中的技术挑战 页面元素无法定位 Appium元素定位的原理 AccessibilityNodeInfo和Drawable 页面视图可测性改造-XraySDK 定位方案对比...Appium元素定位的原理 目前的UI自动化测试,使用Appium进行页面元素的定位和操作。如下图所示,AppiumServer和UiAutomator2的手机端进行通信后完成元素的操作。...接下来我们看一下,这个PartialMatch.accept到底是如何完成元素定位的。通过对于源码的研究,我们发现元素的信息都是存储在一个叫做AccessibilityNodeInfo的对象里面。...图8 动态卡片的页面绘制流程 动态布局的视图呈现过程分为:解析模板->绑定数据->计算布局->页面绘制,计算布局结束后,元素在页面上的位置就已经确定了,那么只要拦截这个阶段信息就可以实现视图信息的获取。...在WebView是否也有同样合适的根节点呢?基于对于HTML的理解,我们可以想到HTML中所有的标签都是挂在BODY标签下面的,BODY标签就是我们需要选取的根节点。

78440
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Appium自动化测试框架

    :系统启动应用耗时=TotalTime+系统资源启动时间(毫秒) ---- 获取手机日志 adb logcat 使用上面命令后,会实时监控手机运行时输出的日志信息 在调试程序的时候,通过实时监控日志信息...是保存当前预设配置 ---- inspector工具 填写完毕后,先保存配置,然后点击start session开启会话即可 ---- 元素探测 appium提供的元素探测 原生的探测工具...---- 强制等待 设置固定等待时间,即便不需要等待即可定位到元素,依然要求进行等待 Thread.sleep(); ---- 隐式等待 针对全局元素设置等待时间,服务端(Appium)会在特定的超时时间内重试多次寻找控件...因此,通过driver定位每一个元素都会有隐式等待的时间,这会影响测试脚本执行的效率 ---- 显示等待 针对某个元素设置等待时间,服务端(Appium)会在特定的超时时间内重试多次寻找控件 在设定的时间范围内...Appium提供对Hybrid app进行自动化测试的方法= 基于UIAutomator+ChromeDriver 准备工作: 准备android 4.4+ 版本以上的手机/模拟器 在app源码中将

    2.1K30

    Appium移动测试入门指南(二) - Capability 配置

    (以毫秒为单位)(默认值为 20000) 30000 deviceReadyTimeout 用于等待模拟器或真机准备就绪的超时时间 5 androidCoverage 用于执行测试的 instrumentation...(默认值为 false) true, false androidDeviceReadyTimeout 用于等待设备在启动应用后准备就绪的超时时间。以秒为单位。...例如 chrome_devtools_remote avd 被启动 avd 的名字 例如 api19 avdLaunchTimeout 用于等待 avd 启动并连接 ADB 的超时时间(以毫秒为单位),...300000 avdReadyTimeout 用于等待 avd 完成启动动画的超时时间(以毫秒为单位),默认值为 120000。...以毫秒为单位,在 Appium 运行失败之前设置一个等待 instruments 的时间 例如 20000 locationServicesEnabled (仅支持模拟器)强制打开或关闭定位服务。

    2.8K00

    Appium+python自动化(十四)- 与Capability完美懈垢之解读(超详解)

    我们在appium中配置app后我们能够通过log看出里面的信息都是启动的一些必要配置,通过上面的配置信息我么也能够看出capability配置的就是我们做自动化的一些必要信息。...appWaitDuration 用于等待appWaitActivity启动的超时(以毫秒为单位20000)(默认) 30000 deviceReadyTimeout 在等待设备准备就绪的几秒钟内超时...传递到-a在adb外壳广播-a com.example.pkg.END_EMMA androidDeviceReadyTimeout 用于等待设备在启动后准备就绪的秒数 例如, 30 androidInstallTimeout...用于等待apk安装到设备的超时(以毫秒为单位)。...例如 io.appium.TestApp udid 连接的物理设备的唯一设备标识符 例如 1ae203187fc012g launchTimeout 假设它挂起和失败会话之前以毫秒为单位等待仪器的时间

    3.4K50

    项目管理Maven系列(四)- 结合Selenium、Appium、OkHttp、HttpClient

    // Android 停止应用程序,清除应用程序数据并在测试后卸载apk // IOS 在真机设备测试后卸载应用程序,在模拟器测试后摧毁模拟器 capabilities.setCapability...("fullReset", false); // 设置命令超时时间,单位:秒 // 达到超时时间仍未接收到新的命令时Appium会假设客户端退出然后自动结束会话...,单位毫秒 .setSocketTimeout(15000) // 请求获取数据的超时时间,单位毫秒 .setConnectionRequestTimeout...,单位毫秒 .setSocketTimeout(15000) // 请求获取数据的超时时间,单位毫秒 .setConnectionRequestTimeout...,单位毫秒 .setSocketTimeout(15000) // 请求获取数据的超时时间,单位毫秒 .setConnectionRequestTimeout

    2.5K10

    妙用AccessibilityService黑科技实现微信自动加好友拉人进群聊

    (客户端任可正常使用) 而现在另外新申请的微信小号是无法登录微信网页端的,其实这是微信在慢慢关停网页版登录, 最主要的原因就是机器人泛滥!...---- 2.服务的配置 自定义完这个服务要想让他启用你还得执行下面的操作: Step 1:在res文件夹下创建xml文件夹,新建一个配置的xml文件(名字自己定) 后,需要在手机设置的无障碍处开启服务 一般在设置的辅助功能处能找到: 如果Logcat那里能看到打印的LOG,说明服务正常运行,接下来要找控件节点 ---- 3.找控件 这里可以用到神器...resource-id不一定是唯一的 获得控件基本都会通过下述这个方法: getRootInActiveWindow( ):获取当前整个活动窗口的根节点 返回的是一个AccessibilityNodeInfo...后面的这两个方法会返回一个AccessibilityNodeInfo列表,一般操作是 遍历,然后筛选特定节点,比如我程序里的,获得底部Tab节点为”通讯录”, 然后点击,跳转后遍历,筛选”群聊”

    3.2K40

    spring boot集成redisson的最佳实践

    >等标签来简化在xml中的配置,但是如果我们的程序是spring boot,一般都是使用application.properties来配置我们应用配置参数,不想提供额外的yaml,json,xml等配置文件...,单位:毫秒 默认10000;当前连接池里的连接数量超过了最小空闲连接数, #而连接空闲时间超过了该数值,这些连接将会自动被关闭,并从连接池里去掉 spring.redisson.idleConnectionTimeout...=10000 #ping节点超时,单位:毫秒,默认1000 spring.redisson.pingTimeout=1000 #连接等待超时,单位:毫秒,默认10000 spring.redisson.connectTimeout...=10000 #命令等待超时,单位:毫秒,默认3000;等待节点回复命令的时间。...=3000 #执行失败最大次数, 默认值:3;失败后直到 reconnectionTimeout超时以后再次尝试。

    17.6K80

    Confluence 6 配置 HTTP 超时设置

    配置 HTTP 超时设置: 在屏幕的右上角单击 控制台按钮 ?  ,然后选择 General Configuration 链接。...在左侧面板的顶部选择 基本配置(General Configuratio)。 在屏幕的下方找到 链接超时(Connection Timeouts)选项。...连接超时(毫秒 Connection Timeout (milliseconds)):这个设置最大的链接超时时间。如果设置为 0 的话,表示连接超时不限制。默认值是 10 秒(10000)。...套接字超时(毫秒 Socket Timeout (milliseconds)):设置默认的套接字超时时间(SO_TIMEOUT),默认的值为毫秒。这个值是 Confluence 等待数据的最长时间。...如果设置为 0 的话,表示的是不停的等待数据。默认值是 10 秒(10000)。

    1.7K30

    Appium 元素等待设置

    思考 在自动化过程中,元素出现受网络环境,设备性能等多种因素影响。因此元素加载的时间可能不一致,从而会导致元素无法定位超时报错,但是实际上元素是正常加载了的,只是出现时间晚一点而已。...元素等待作用 设置元素等待可以更加灵活的制定等待定位元素的时间,从而增强脚本的健壮性,提高执行效率。...元素等待类型 强制等待 设置固定的等待时间,使用sleep()方法即可实现 from time import sleep #强制等待5秒 sleep(5) 隐式等待 隐式等待是针对全部元素设置的等待时间...driver.implicitly_wait(20) 显式等待 显式等待是针对某个元素来设置的等待时间。...,默认以秒为单位 poll_frequency : 休眠时间的间隔时间,默认为0.5秒 ignored_exceptions : 超时后的异常信息,默认情况下抛NoSuchElementException

    1.3K20

    ApiBoot v2.2.7版本发布,新增扩展SpringBoot Mongo详细配置组件

    提供的扩展参数 参数名 默认值 描述 api.boot.mongo.settings.socket.connect-timeout-milli-seconds 10000 设置Socket连接超时时间,...单位:毫秒 api.boot.mongo.settings.socket.read-timeout-milli-seconds 10000 设置Socket读取超时时间,单位:毫秒 api.boot.mongo.settings.socket.receive-buffer-size...10000 设置心跳Socket连接超时时间,单位:毫秒 api.boot.mongo.settings.heartbeat-socket.read-timeout-milli-seconds 10000...最小连接数 api.boot.mongo.settings.connection-pool.max-wait-time-milli-seconds 120000 线程等待连接可用的最长时间,单位:毫秒...在连接池上运行第一个维护作业之前要等待的时间,单位:毫秒 api.boot.mongo.settings.cluster.local-threshold-milli-seconds 15 设置本地阈值,

    55720

    Jmeter压测验证waf新建连接数

    Timer),注意:模拟用户组数量需要与线程组中的线程数保持一致图片同步计时器工作原理:比如设置100个线程、超时时间10000ms,从定时器工作开始计时,时间从0开始,在超时时间内第1个线程达到,则计时器重置为...0;等待第2个线程,在超时时间内第2个线程达到,计时器重置为0;等待第3个线程......只要相邻两个线程之间等待时间间隔没有超过10000ms,就会等待全部100线程后全部释放,否则就会停止等待立即释放。...同步计时器的两个参数设置及作用:参数名作用及设置模拟用户组的数量(Number of Simulated Users to Group by)与线程组中的线程数保持一致即可,相当于指定的同时释放线程数量超时时间已毫秒为单位...(Timeout in milliseconds)多少毫秒后同时释放指定的线程数测试接口的连接超时与响应事时间设置,连接超时5s,响应超时10s图片验证百度首页接口100并发添加同步计时器前图片百度首页接口

    1.5K50

    Android:AccessibilityService辅助功能基础使用(附微信抢红包教程)

    代码片段2中的meta部分是AccessibilityService的配置信息,这是android 4.0后才支持的,代码如下: // 代码片段3 的事件就有点麻烦了。我在github上写了一个微信抢红包的的开源项目,代码地址,我结合这个git库的代码解释下如何处理监听事件。...、closePacket(rootInActiveWindow: AccessibilityNodeInfo?),这四个方法的处理逻辑在Packet.kt类中。...我们捕捉到这个事件后调用searchPacket()方法,顾名思义,这个方法要搜索红包并点击。...()有什么区别,前者是辅助服务调用的,应该是窗口的根节点,后者是监听到的某个事件获取的,应该是这个事件的源节点,我用Log显示大部分时候两者是一致的。

    6.2K20

    Appium爬App了解一下

    我们可以通过Appium内置的驱动或Python代码向Appium的服务器发送一系列操作指令,Appium就会根据不同的指令对移动设备进行驱动,完成不同的动作。启动后运行界面如下图所示。 ?...首先需要在代码中指定一个Appium Server,而这个Server在刚才打开Appium的时候就已经开启了,是在4723端口上运行的,配置如下所示: server = 'http://localhost...选择器路径太长,选择方式没有那么科学,获取元素时也没有设置等待,很可能会有超时异常。...点击 点击可以使用tap()方法,该方法可以模拟手指点击(最多五个手指),可设置按时长短(毫秒),代码如下所示: tap(self, positions, duration=None) 其中后两个参数如下...它的后两个参数如下。 original_el:它是被操作的元素。 destination_el:它是目标元素。

    9.5K61

    appium教程_2.概念加深

    appium教程_2.概念加深 启动步骤 安卓,driver为uiautomator2 通过查看appium server的日志来看整个启动过程 启动server,默认4723端口 ?...如上图,device api是 19,这是一台安卓4的设备,后续我换成了安卓8的设备,api devel=27 给手机安装appium setting应用) 判断是否安装了appium setting...启动服务,等待连接 ? 通过session 获取设备信息 ? respond 客户端,已经创建好了seesion ? 业务操作,我这里是获取当前current_activity ?...超时,自动delete seesion,默认60s ?...转发到 手机端(或者说设备端)6290 启动环境,ready 应答client端 收到session创建ok的应答后,通过http请求发送指令 server端在60s(默认超时时间)没有收到请求,自动删掉

    94810

    用 MHA 做 MySQL 读写分离,频繁爆发线上生产事故后,泪奔分享 Druid 连接池参数优化实战

    如果wait_timeout超时时间设置过大,在MySQL管理系统里会产生大量的SLEEP进程无法及时释放,会导致服务器系统性能下降;同时该参数设置过小,会导致Mysql处理某些事务未处理,连接不可用状态...发现连接池有个MaxWait参数设置过大:60000毫秒 druidDataSource.setMaxWait(60000) 然后在CSDN上,发现有个同行碰到同样的问题: 发现数据库等待超时时间(wait_timeout...参数设置成10000,小于Mysql超时时间(wait_timeout):28800 ,在测试环境等待8小时后,报错消失了。...其他扩展思路(来源网络): 思路一:在jdbc-url后添加 &autoReconnect=true,使用后无效,查的该方案只适用于Mysql4之前的版本有效 思路二:将mysql回收空闲连接的时间变长...druidDataSource.setMaxActive(20); druidDataSource.setInitialSize(1); // 配置获取连接等待超时的时间

    1.8K20
    领券