首页
学习
活动
专区
圈层
工具
发布

软件测试|UI遍历的初步尝试

对于测试人员,UI 遍历已经很普遍了,比如说 Monkey, UICrawler 等等,都可以进行 UI 遍历。那我们怎么按照顺序去遍历一个 app 呢。...下面介绍一个360 开测平台上用 uiautomator 做的 UI 遍历。实现步骤需要的参数:包名、启动类名、遍历截止类名、遍历时间、遍历总步数、遍历中需要登录的账号、登录密码。实现思路:①....遍历结束,停止UI遍历详细说明NUM 1图片初始化参数配置图片NUM 2监听界面变化,这里我们添加 AccessibilityService 进行界面变化的监听,主要监听界面的三个变化,TYPE_WINDOW_STATE_CHANGED...图片2、比对图片的相似度,每点击一次,比对一个图片相似度,如果存在相同的部分,直接抽取数据进行排列组合生成一个新的 list图片NUM 6操作界面元素图片NUM 7停止UI遍历停止条件:遍历时间和设置时间相同..., 遍历步数和设置的步数相同, 返回手机屏幕界面,遍历结束图片图片

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

    二叉树的遍历

    前言二叉树有三种遍历方式,三种遍历方式的核心都是把一颗二叉树分为根、左子树、右子树三部分。前中后其实说的是根出现的顺序,在二叉树中左子树遍历顺序始终先于右子树。...(3的右子树)2的左子树遍历完,返回遍历2的右子树根1-> 根2(1的左子树) -> 根3(2的左子树)-> N(3的左子树)-> N(3的右子树)->N(2的右子树)1的左子树遍历完,返回遍历1的右子树根...的左子树遍历完,返回遍历4的右子树根1-> 根2(1的左子树) -> 根3(2的左子树)-> N(3的左子树)-> N(3的右子树)->N(2的右子树)->根4(1的右子树)->根5(4的左子树)->N...(根1的左子树)->(根2的左子树)->N(根3的左子树)->根3->N(根3的右子树)2的左子树遍历完,返回遍历根2和根2的右子树(根1的左子树)->(根2的左子树)->N(根3的左子树)->根3-...>N(根3的右子树)->根2->N(2的右子树)根2和根2的右子树遍历完(也就是根1的左子树遍历完),返回遍历根1和根1的右子树(根1的左子树)->(根2的左子树)->N(根3的左子树)->根3->N(

    16520

    二叉树的遍历

    介绍 二叉树的遍历可以说是二叉树最重要的一个内容,如果想对树的算法有一定的认识,那么二叉树的遍历是一定要熟练使用的,本文将主要介绍一下二叉树的遍历。...算法实现 先序遍历 先序、中序、后序遍历中的序就是访问根节点的顺序。先序遍历也就是先访问根节点。 递归先序遍历 void order_traversal(BiTree T) { if(T!...后序遍历二叉树应该先访问左子树,再访问右子树,最后访问根节点。...直到上述操作进行不下去,若栈顶元素想要出栈被访问,要么右子树为空,要么右子树刚被访问完(此时左子树早就访问完),这样就保证了正确的访问顺序。...上述算法思路中,第2步必须分清是从左子树返回的,还是右子树返回的。因此设定一个辅助指针,指向最近访问过的节点,也可在节点中增加一个标志域,记录是否已被访问。

    37930

    二叉树的遍历

    解决二叉树的很多问题的方案都是基于对二叉树的遍历。遍历二叉树的前序,中序,后序三大方法算是计算机科班学生必写代码了。其递归遍历是人人都能信手拈来,可是在手生时写出非递归遍历恐非易事。...正因为并非易事,所以网上出现无数的介绍二叉树非递归遍历方法的文章。可是大家需要的真是那些非递归遍历代码和讲述吗?...而这三种方法最大的缺点就是都使用嵌套循环,大大增加了理解的复杂度。 更简单的非递归遍历二叉树的方法 这里我给出统一的实现思路和代码风格的方法,完成对二叉树的三种非递归遍历。...,如同递归遍历一样,只有三行核心代码的先后顺序有区别。...应用于二叉树 基于这种思想,我就构思三种非递归遍历的统一思想:不管是前序,中序,后序,只要我能保证对每个结点而言,该结点,其左子结点,其右子结点都满足以前序/中序/后序的访问顺序,整个二叉树的这种三结点局部有序一定能保证整体以前序

    1.3K40

    二叉树的先序遍历、中序遍历、后序遍历

    1 问题 Python中二叉树的先序遍历、中序遍历、后序遍历。 2 方法 先序遍历的递归算法定义: 若二叉树非空,则依次执行如下操作: ⑴ 访问根结点; ⑵ 遍历左子树; ⑶ 遍历右子树。...中序遍历的递归算法定义: 若二叉树非空,则依次执行如下操作: ⑴ 遍历左子树; ⑵ 访问根结点; ⑶ 遍历右子树。...后序遍历的递归算法定义: 若二叉树非空,则依次执行如下操作: ⑴ 遍历左子树;⑵ 遍历右子树;⑶ 访问根结点。...self.right = right def __str__(self): return str(self.data) class MyTree(): '二叉树的实现...(btree.base) 3 结语 我们针对Python中二叉树的先序遍历、中序遍历、后序遍历的问题,运用书上相应的基础知识,通过代码运行成功证明该方法是有效的,二叉树的遍历的应用非常广泛,希望通过未来的学习我们能写出更多长的

    40010

    二叉树的先序遍历 中序遍历 后序遍历 层序遍历

    两种特殊的二叉树 完全二叉树: 完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。...对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。 要注意的是满二叉树是一种特殊的完全二叉树。...满二叉树: 一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。...也就是说,如果一个二叉树的层数为K,且结点总数是(2^k) -1 ,则它就是满二叉树 二叉树的遍历 先序遍历 :先遍历根节点,再遍历左节点,最后遍历右节点 中序遍历 :先遍历左节点,再遍历根节点,最后遍历右节点...后序遍历 :先遍历左节点,再遍历右节点,最后遍历根节点 层序遍历 : 自上而下,自左至右逐层访问树的结点的过程就是层序遍历 遍历方法的实现 先建立一棵树 用代码建立以上树 class Node

    1.3K20

    二叉树的遍历 → 不用递归,还能遍历吗

    二叉树节点定义类似如下 value 存储数据, left 指向左子树, right 指向右子树   二叉树结构类似如下   二叉树的遍历分两种:深度遍历 和 广度遍历   深度遍历又分三种:先序遍历...左子树 -> 右子树 -> 根(父)节点   广度遍历也指层次遍历,从下至上或从下至上一层一层的从左至右遍历   基于上图中的二叉树,我们来看看各种遍历的结果   先序遍历:a b q w t u c...用到了双栈,大家仔细揣摩下代码   深度优先遍历   指的就是先序遍历,前面已经实现过,这里就不再赘述 广度遍历   一层一层的遍历二叉树,如果未明确指明,都是从左至右遍历   广度遍历不满足递归的条件...有这种感觉我们就去尝试,广度遍历需要用到队列,倒置需要用到栈,具体实现如下   是不是觉得很有意思?   ...    而如何正确的找到决策过程,没有答案,全凭个人的感觉,可以通过多练题来提高这种感觉   2、二叉树遍历是解决二叉树相关问题的基础,不同的遍历可以解决不同的问题     下一篇讲二叉树相关的具体案例

    71340

    【LeetCode刷题指南】--二叉树的后序遍历,二叉树遍历

    一.二叉树的后序遍历 题目链接:145....二叉树的后序遍历 - 力扣(LeetCode) 题目描述: 题目示例: 思路: 后序遍历,动态开辟数组 解题过程: 1. returnsize表示要返回的数组的大小,我们这里需要动态开辟数组所申请的空间也是...pi++然后返回,其它的时候就是申请节点(这个很简单就不讲了,传的参数是arr[(*pi)++],注意是后置++),然后递归创建左孩子节点和右孩子节点(核心思想和前序遍历相似,可以参考),递归创建结束后返回...3.再调用中序遍历,传的是之前返回的创建完后的root,这个题就结束了。...刷题指南】--二叉树的前序遍历,二叉树的中序遍历 【LeetCode刷题指南】--对称二叉树,另一颗树的子树 结语:本篇文章就到此结束了,《LetetCode刷题指南》中的题目比起之间的C语言刷题集中的题目

    1300

    二叉树的递归遍历

    特点1 虽然是从root开始,但是 严重依赖从下到上的反馈的数据 ,例如求tree的高度 题目1 最近公共祖先(LCA) 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。...百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”...Balanced Binary Tree 依赖下面反馈 合并在一起 特点2 从上到下,依赖当前root节点判断 1 翻转等价二叉树 我们可以为二叉树 T 定义一个翻转操作,如下所示:选择任意节点,然后交换它的左子树和右子树...只要经过一定次数的翻转操作后,能使 X 等于 Y,我们就称二叉树 X 翻转等价于二叉树 Y。 编写一个判断两个二叉树是否是翻转等价的函数。...翻转一棵二叉树 root保持不变 左右子树交换 重复步骤1和2 测试 翻转一棵二叉树 code class Solution { public: TreeNode* invertTree(TreeNode

    65820

    二叉树的分层遍历

    给定一棵二叉树,要求从上到下从左到右分层输出该二叉树的节点值。 bitree.png 一、递归法 二叉树本身就带有递归属性,通常我们可以用递归方法解决。...假设要访问第k层节点,那么其实可以转换成分别访问“以该二叉树根节点的左右子节点为根节点的两棵子树”中层次为k-1的节点(root所在的层看作是第0层)。...此方法理论上需要求出二叉树的深度,实际上访问到二叉树某一层次失败的时候返回就可以了。...上面的递归遍历,对每一层的访问都需要从根节点开始,直到访问完所有的层次,造成效率极低。...二、使用数组和两个游标的非递归方法 在访问k层的时候,我们只需要知道k-1层的信息就足够了,所以在访问第k层的时候,要是能够知道k-1层的节点信息,就不再需要从根节点开始遍历了。

    95670

    二叉树前序遍历、中序遍历、后序遍历、层序遍历的直观理解

    一棵二叉树由根结点、左子树和右子树三部分组成,若规定 D、L、R 分别代表遍历根结点、遍历左子树、遍历右子树,则二叉树的遍历方式有 6 种:DLR、DRL、LDR、LRD、RDL、RLD。...由于先遍历左子树和先遍历右子树在算法设计上没有本质区别,所以,只讨论三种方式: DLR–前序遍历(根在前,从左往右,一棵树的根永远在左子树前面,左子树又永远在右子树前面 ) LDR–中序遍历(根在中,从左往右...而对于D,它是G和H的根,对于D、G、H这棵小树而言,顺序分别是DGH、GDH、GHD;对于C,它是E和F的根,三种排序的顺序分别为: CEF、ECF、EFC。...二叉树结点的先根序列、中根序列和后根序列中,所有叶子结点的先后顺序一样 建议看看文末第3个参考有趣详细的推导 前序遍历(DLR)...层序遍历 层序遍历嘛,就是按层,从上到下,从左到右遍历,这个没啥好说的。 参考 1.

    2.8K40

    二叉树的遍历回顾

    目录 写在前面 递归式遍历 先序遍历的迭代版本 中序遍历的迭代版本 后序遍历的迭代版本 层次遍历 小结 参考 写在前面 本文重点在于复习并总结 二叉树每种遍历方式的递归与迭代实现,图片和示例代码均来自《...递归式遍历 二叉树可以递归地定义,根节点、左子树和右子树,左右子树也可以分别是一棵二叉树。...S.push(x->lChild); //然后才转至左孩子 } else //实不得已 S.push(x->rChild); //才向右 S.pop(); //返回之前...,弹出栈顶的空节点 } template void travPost(BinNodePosi(T) x, VST& visit) { //二叉树的后序遍历...x = S.pop(); visit(x->data); //弹出栈顶(即前一节点的后继),并访问 } } 层次遍历 层次遍历,也就是所谓的广度优先遍历,顾名思义,按“先上后下、先左后右”的顺序逐层访问

    63110

    Qz学算法-数据结构篇(顺序存储二叉树、线索化+遍历)

    顺序存储二叉树概念从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组,看右面的示意图。...要求右图的二叉树的结点,要求以数组的方式来存放arr:[1,2,3,4,5,6,6]要求在遍历数组arr时,仍然可以以前序遍历,中序遍历和后序遍历的 方式完成结点的遍历特点顺序二叉树通常只考虑完全二叉树第...},要求以二叉树前序遍历的方式进行遍历。...arrBinaryTree = new ArrBinaryTree(arr); arrBinaryTree.preOrder(); }}//编写一个ArrayBinaryTree,实现顺序存储二叉树遍历...= arr; } //重载preOrder public void preOrder(){ this.preOrder(0); } //编写方法,完成顺序存储二叉树的前序遍历

    25810
    领券