@Test

public void testUIComputation() throws Exception {

// populate text fields with values

populate();

// trigger computation by using the button

//点击控件计算两个数的和

WebElement button = driver.findElement(By.className("UIAButton"));

button.click();

// is sum equal ?

//判断得到的数是否和正确的和相等

WebElement texts = driver.findElement(By.className("UIAStaticText"));

assertEquals(String.valueOf(values.get(0) + values.get(1)), texts.getText());

}

@Test

public void testBasicAlert() throws Exception {

//点击alert控件,弹出提示框

driver.findElement(By.xpath("//UIAButton[2]")).click();

Alert alert = driver.switchTo().alert();

//check if title of alert is correct

//验证提示框文字是否正确

assertEquals("Cool title this alert is so cool.", alert.getText());

alert.accept();

}

@Test

public void testBasicButton() throws Exception {

// 验证求和 button文字显示是否正确

WebElement button = driver.findElement(By.xpath("//UIAButton[1]"));

assertEquals("Compute Sum", button.getText());

}

@Test

public void testClear() throws Exception {

//验证编辑框输入清空后编辑框内容是否为空

WebElement text = driver.findElement(By.xpath("//UIATextField[1]"));

text.sendKeys("12");

text.clear();

assertEquals("", text.getText());

}

@Test

public void testHideKeyboard() throws Exception {

//编辑框输入文字

driver.findElement(By.xpath("//UIATextField[1]")).sendKeys("12");

//确认键盘是否弹出

WebElement button = driver.findElement(MobileBy.AccessibilityId("Done"));

assertTrue(button.isDisplayed());

//点击隐藏键盘

button.click();

}

@Test

public void testFindElementByClassName() throws Exception {

Random random = new Random();

//通过classname定位控件测试

WebElement text = driver.findElementByClassName("UIATextField");

int number = random.nextInt(MAXIMUM - MINIMUM + 1) + MINIMUM;

text.sendKeys(String.valueOf(number));

driver.findElementByClassName("UIAButton").click();

// is sum equal ?

//验证是否相等

WebElement sumLabel = driver.findElementByClassName("UIAStaticText");

assertEquals(String.valueOf(number), sumLabel.getText());

}

@Test

public void testFindElementsByClassName() throws Exception {

Random random = new Random();

//通过classname定位控件测试

WebElement text = (WebElement) driver.findElementsByClassName("UIATextField").get(1);

int number = random.nextInt(MAXIMUM - MINIMUM + 1) + MINIMUM;

text.sendKeys(String.valueOf(number));

driver.findElementByClassName("UIAButton").click();

// is sum equal ?

WebElement sumLabel = (WebElement) driver.findElementsByClassName("UIAStaticText").get(0);

assertEquals(String.valueOf(number), sumLabel.getText());

}

@Test

public void testAttribute() throws Exception {

Random random = new Random();

WebElement text = driver.findElement(By.xpath("//UIATextField[1]"));

//编辑框输入文字

int number = random.nextInt(MAXIMUM - MINIMUM + 1) + MINIMUM;

text.sendKeys(String.valueOf(number));

//验证控件的name,label,value等属性是否和设定的相同,name为IntegerA

assertEquals("IntegerA", text.getAttribute("name"));

assertEquals("TextField1", text.getAttribute("label"));

assertEquals(String.valueOf(number), text.getAttribute("value"));

}

@Test

public void testSlider() throws Exception {

//get the slider

//进度条控件

WebElement slider = driver.findElement(By.xpath("//UIASlider[1]"));

// 查看初始数据是否为50%

assertEquals("50%", slider.getAttribute("value"));

Point sliderLocation = getCenter(slider);

//拖动控件,从中心拖到初始位置

driver.swipe(sliderLocation.getX(), sliderLocation.getY(), sliderLocation.getX()-100, sliderLocation.getY(), 1000);

//验证控件是否归0,不归0?

assertEquals("0%", slider.getAttribute("value"));

}

@Test

public void testLocation() throws Exception {

//验证控件的位置是否为94,122?

WebElement button = driver.findElement(By.xpath("//UIAButton[1]"));

Point location = button.getLocation();

assertEquals(94, location.getX());

assertEquals(142, location.getY());

}

@Test

public void testSessions() throws Exception {

// ?

HttpGet request = new HttpGet("http://localhost:4723/wd/hub/sessions");

@SuppressWarnings("resource")

HttpClient httpClient = new DefaultHttpClient();

HttpResponse response = httpClient.execute(request);

HttpEntity entity = response.getEntity();

JSONObject jsonObject = (JSONObject) new JSONParser().parse(EntityUtils.toString(entity));

String sessionId = driver.getSessionId().toString();

assertEquals(jsonObject.get("sessionId"), sessionId);

}

@Test

public void testSize() {

//验证两个编辑框控件大小是否一致

Dimension text1 = driver.findElement(By.xpath("//UIATextField[1]")).getSize();

Dimension text2 = driver.findElement(By.xpath("//UIATextField[2]")).getSize();

assertEquals(text1.getWidth(), text2.getWidth());

assertEquals(text1.getHeight(), text2.getHeight());

}

Appium basic UI check cases_from sample的更多相关文章

  1. 基于Appium的UI自动化测试

    为什么需要UI自动化测试 移动端APP是一个复杂的系统,不同功能之间耦合性很强,很难仅通过单元测试保障整体功能.UI测试是移动应用开发中重要的一环,但是执行速度较慢,有很多重复工作量,为了减少这些工作 ...

  2. (appium+python)UI自动化_09_unittest批量运行测试用例&生成测试报告

    前言 上篇文章[(appium+python)UI自动化_08_unittest编写测试用例]讲到如何使用unittets编写测试用例,并执行测试文件.接下来讲解下unittest如何批量执行测试文件 ...

  3. 02- web UI测试与UI Check List

    UI英文是 user interface .所以UI测试就是用户界面测试. Web UI测试 用户界面测试:user interface testing,UI Testing指软件中的可见外观及其与用 ...

  4. 基于Python3 + appium的Ui自动化测试框架

    UiAutoTest 一.概要 数据驱动的Ui自动化框架 二.环境要求 框架基于Python3 + unittest + appium 运行电脑需配置adb.aapt的环境变量,build_tools ...

  5. (appium+python)UI自动化_07_app UI自动化实例【叮咚搜索加车为例】

    前言 初学UI自动化的小伙伴,在配置好appium+python自动化环境后,往往不知道如何下手实现自动化.小编在初期学习的时候也有这种疑惑,在此以叮咚买菜app-搜索加车为实例,展示下appium是 ...

  6. (appium+python)UI自动化_03_元素定位工具

    前言 在UI自动化过程中,需要对手机app上的元素进行定位,然后进一步编写自动化脚本操作app.定位元素首先需要定位工具来辅助查看页面元素.小编常用的定位工具有2种,分别是uiautomatorvie ...

  7. (appium+python)UI自动化_02_appium启动手机app

    前提:需先安装配置好appium+python自动化环境,已配置好环境的小伙伴可以参考以下步骤启动Android app,具体步骤如下: 一.USB连接手机 (1)手机USB连接电脑 (2)手机打开开 ...

  8. (appium+python)UI自动化_01_自动化环境搭建【MAC版】

    Appium简介 Appium是一个开源的.跨平台的测试框架,主要用来进行app UI自动化,适用于原生应用.混合应用和移动网页应用(H5页面).目前支持Python.JavaScript.Objec ...

  9. Python+appium+unittest UI自动化测试

    什么是UI自动化 自动化分层 单元自动化测试,指对软件中最小可测试单元进行检查和验证,一般需要借助单元测试框架,如java的JUnit,python的unittest等 接口自动化测试,主要检查验证模 ...

随机推荐

  1. mongodb权限机制以及扩展

    mongodb权限机制 启动权限机制之前要先在MONGODB中添加管理员账号: 1. 创建账号 重装安装一个mongodb,安装时添加一个 --auth参数: 先把安装好的从服务中删除掉(删除之后数据 ...

  2. linux实时查看更新日志命令

    很多时候在调试生成或正式平台服务器的时候想查看实时的日志输出,在Linux中可以使用tail 或 watch来实现. 比如我们项目中有个 app.log 的日志文件,我们普通读取都使用 vi app. ...

  3. [转]常见linux命令用法介绍

    su switch user 用途:用于用户之间的切换 格式: su - USERNAME切换用户后,同时切换到新用户的工作环境中 su USERNAME切换用户后,不改变原用户的工作目录,及其他环境 ...

  4. 【Luogu】P1417烹调方案(排序01背包)

    题目链接 对食材进行排序,重载运算符代码如下: struct food{ long long a,b,c; bool operator <(const food &a)const{ re ...

  5. 源码分析 脱壳神器ZjDroid工作原理

    0. 神器ZjDroid Xposed框架的另外一个功能就是实现应用的简单脱壳,其实说是Xposed的作用其实也不是,主要是模块编写的好就可以了,主要是利用Xposed的牛逼Hook技术实现的,下面就 ...

  6. 【CCF】路径压缩 区间dp

    [题意] 改编哈夫曼树,限制从左到右字母的编码按字典序递增 [思路] 因为是二进制编码,所以是二叉树: 因为是前缀码,所以每个字母都是叶子结点,不可能是内结点: 因为要按字典序递增,所以只能是相邻的结 ...

  7. bzoj1853: [Scoi2010]幸运数字 dp+容斥原理

    在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的“幸运号码”是十进制表示中只包含数字6和8的那些号码,比如68,666,888都是“幸运号码”!但是这种“幸运号码”总是 ...

  8. omcat 7 的domain域名配置,Tomcat 修改JSESSIONID

    https://blog.csdn.net/catoop/article/details/64581325

  9. STL优先队列模板

    1. 优先队列 用途:按照某一个关键字对插入元素或删除元素后的数据集进行自动排序 复杂度: logN 2. 数据声明 (1)头文件:#include<queue> (2)声明:  prio ...

  10. SpringBoot整合freemarker中自定义标签获取字典表的数据

    因为在前端要根据字典表中的数据去将1.2这些值转换成对应的文字解释 1.首先要创建一个类去实现 TemplateDirectiveModel 类 @Component public class Dic ...