get attribute 原理分析
- 官方文档:http://appium.io/docs/en/commands/element/attributes/attribute/
- 与 selenium 不同,有大量移动端元素的属性值
页面代码分析
- page_source 获取页面源码
- selenium-html,appium-xml
- uiautomatorviewer 里面的结构
- get_attribute 获取的元素属性基本上都来自于 page_source 里面元素展示的属性
获取页面 attribute 流程
- appium server 在 android 原生应用上获取 attribute 的大致流程为:
- 从 client 收到获取 attribute 的请求
- 把请求转发给在手机上运行的 bootstrap
- bootstrap 调用相关方法进行实际操作
- bootstrap 返回结果给 appium server
- appium server 把结果返回给 client
源代码
- https://github.com/appium
- 下载 appium-uiautomator2-server
- appium 收到请求之后,对于 android 自动化,都会转发给 appium-uiautomator2-server
断言
- import static org.junit.jupiter.api.Assertions.*;
- assert 断言,用于判断一个表达式,在表达式条件为 false 的时候触发异常
- 例如:
- Integer a = new Integer(1);
- Integer b = new Integer(2);
- assertEquals(a,b);
- asserNotNull(a);
- assertTrue(false);
- assertFalse(true);
- assertNull(b);
- assertSame(a,b);
- assertNotSame(a,b);
- assertArrayEquals(new int[]{7,8,9},new int[]{2,3,4});
hamcrest 断言
- 官网 http://hamcrest.org/JavaHamcrest/
- hamcrest 框架介绍
- Hamcrest 是一个为了测试为目的,能组合成灵活表达式的匹配器类库。用于编写断言的框架,使用这个框架编写断言,提高可读性级开发测试的效率。
- Hamcrest 提供了大量被称为“匹配器”的方法。每个匹配器都涉及用于执行特定的比较操作。
- Hamcrest 的可扩展性强,让你能够创建自定义的匹配器。
- 支持多种语言,java,python,ruby,object-c,php,erlang,swift
- 使用方法
- 常用方法 API
- equal_to 比较两个对象 assertThat("说明","字符串",equalTo("另一个字符串"));
- greaterThan 比较两个数值的大小 assertThat("说明", 200, greaterThan(300));