AndroidPageObjectTest_ByAllPossible.java
以下代码使用ApiDemos-debug.apk进行测试
//这个脚本用于演示PageFactory的功能:使用注解@AndroidFindAll定位元素。注解用法参考页面类代码。
- package com.saucelabs.appium;
- import io.appium.java_client.MobileElement;
- import io.appium.java_client.android.AndroidDriver;
- import io.appium.java_client.pagefactory.AppiumFieldDecorator;
- import io.appium.java_client.remote.MobileCapabilityType;
- import java.io.File;
- import java.net.URL;
- import java.util.concurrent.TimeUnit;
- import org.junit.After;
- import org.junit.Assert;
- import org.junit.Before;
- import org.junit.Test;
- import org.openqa.selenium.WebDriver;
- import org.openqa.selenium.remote.DesiredCapabilities;
- import org.openqa.selenium.support.PageFactory;
- import com.saucelabs.appium.page_object.android.ApiDemosListViewScreenByAllPossible;
- import com.saucelabs.appium.page_object.android.ApiDemosListViewScreenChaided;
- import com.saucelabs.appium.page_object.android.ApiDemosListViewScreenSimple;
- import com.saucelabs.appium.page_object.ios.TestAppScreenSimple;
- /**
- * Please read about Page Object design pattern here:
- * https://code.google.com/p/selenium/wiki/PageObjects
- *
- * Please look at:
- * {@link ApiDemosListViewScreenSimple}
- * {@link ApiDemosListViewScreenChaided}
- * {@link ApiDemosListViewScreenByAllPossible}
- * {@link TestAppScreenSimple}
- *
- */
- public class AndroidPageObjectTest_ByAllPossible {
- private WebDriver driver;
- private ApiDemosListViewScreenByAllPossible apiDemosPageObject;
- @Before
- public void setUp() throws Exception {
- //File classpathRoot = new File(System.getProperty("user.dir"));
- File appDir = new File("E:/package");
- File app = new File(appDir, "ApiDemos-debug.apk");
- DesiredCapabilities capabilities = new DesiredCapabilities();
- capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");
- capabilities.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
- driver = new AndroidDriver<MobileElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
- apiDemosPageObject = new ApiDemosListViewScreenByAllPossible();
- PageFactory.initElements(new AppiumFieldDecorator(driver, 5, TimeUnit.SECONDS),
- apiDemosPageObject);
- }
- @After
- public void tearDown() throws Exception {
- driver.quit();
- }
- /**
- * Page Object best practice is to describe interactions with target
- * elements by methods. These methods describe business logic of the page/screen.
- * Here test interacts with lazy instantiated elements directly.
- * It was done so just for obviousness
- */
- @Test
- public void findAllElementTest(){
- Assert.assertNotEquals(null, apiDemosPageObject.findAllElementView.getAttribute("text"));
- }
- @Test
- public void findAllElementsTest(){
- Assert.assertNotEquals(0, apiDemosPageObject.findAllElementViews.size());
- }
- }
下面是页面类的代码:
- package com.saucelabs.appium.page_object.android;
- import io.appium.java_client.MobileElement;
- import java.util.List;
- import io.appium.java_client.android.AndroidElement;
- import io.appium.java_client.pagefactory.AndroidFindAll;
- import io.appium.java_client.pagefactory.AndroidFindBy;
- /**
- *
- * Here is the common sample shows how to use
- * {@link AndroidFindAll} annotation to describe all possible
- * locators of a target element. This feature should help to
- * reduce the number of page PageObject-classes
- *
- * It demonstrates how to declare screen elements using Appium
- * page objects facilities.
- *
- * About Page Object design pattern read here:
- * https://code.google.com/p/selenium/wiki/PageObjects
- *
- */
- public class ApiDemosListViewScreenByAllPossible {
- /**
- * Page Object best practice is to describe interactions with target
- * elements by methods. This methods describe business logic of the page/screen.
- * Here lazy instantiated elements are public.
- * It was done so just for obviousness
- */
- @AndroidFindAll({
- @AndroidFindBy(uiAutomator = "new UiSelector().resourceId(\"android:id/Fakecontent\")"),
- @AndroidFindBy(id = "android:id/Faketext1"),
- @AndroidFindBy(uiAutomator = "new UiSelector().resourceId(\"android:id/list\")"), //by this locator element is found
- @AndroidFindBy(id = "android:id/FakeId")
- }) //If here is a list then it will be filled by all elements
- //which are found using all declared locators
- public List<MobileElement> findAllElementViews;//若这里是一个列表,那么列表由全部定位方法指定的全部元素组成。
- @AndroidFindAll({
- @AndroidFindBy(uiAutomator = "new UiSelector().resourceId(\"android:id/Fakecontent\")"),
- @AndroidFindBy(id = "android:id/Faketext1"),
- @AndroidFindBy(uiAutomator = "new UiSelector().resourceId(\"android:id/list\")"), //by this locator element is found
- @AndroidFindBy(id = "android:id/FakeId")
- }) //If here is a single element then it will find the first
- //element that is found by any of declared locators
- public AndroidElement findAllElementView;//如果这里不是列表,那么变量值都将是第一个被发现的元素无论是使用哪种定位方法。
}
AndroidPageObjectTest_ByAllPossible.java的更多相关文章
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题
背景起因: 记起以前的另一次也是关于内存的调优分享下 有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...
- Elasticsearch之java的基本操作一
摘要 接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...
- 论:开发者信仰之“天下IT是一家“(Java .NET篇)
比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...
- 故障重现, JAVA进程内存不够时突然挂掉模拟
背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...
- 死磕内存篇 --- JAVA进程和linux内存间的大小关系
运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...
- 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用
有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...
- Java多线程基础学习(二)
9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...
- Java多线程基础学习(一)
1. 创建线程 1.1 通过构造函数:public Thread(Runnable target, String name){} 或:public Thread(Runnable target ...
随机推荐
- npm-debug.log文件出现原因
项目主目录下总是会出现这个文件,而且不止一个,原因是npm i 的时候,如果报错,就会增加一个此文件来显示报错信息,npm install的时候则不会出现.
- 微信小程序 wx.navigateTo()传参及多个参数方法
var workModeAndPriceList = res.data.data.workModeAndPriceList; //var result = JSON.stringify(workMod ...
- 初级Springboot(一)
初级Springboot(一) 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 一.了解Springboot 做Java开发的小伙伴都知道,我们在做项目的时候,需要去写大量的配置文件 ...
- HDU 3605 Escape 最大流+状压
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=3605 Escape Time Limit: 2000/1000 MS (Java/Others) ...
- U-boot for Tiny4412
我的开发板型号: Tiny4412ADK + S700 4GB Flash 1. Build uboot a) 安装好toolchain (arm-linux-gcc-4.5.1-v6-vfp-201 ...
- android中如何发送一个广播
1.首先要声明广播 private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() { @Override public ...
- Linq查询满足条件记录集
通过linq查询datatable数据集合满足条件的数据集 1.首先定义查询字段的变量,比方深度 string strDepth=查询深度的值: var dataRows = from datarow ...
- 初涉IPC,了解AIDL的工作原理及用法
初涉IPC,了解AIDL的工作原理及用法 今天来讲讲AIDL.这个神奇的AIDL,也是近期在学习的,看了某课大神的解说写下的blog,希望结合自己的看法给各位同价通俗易懂的解说 官方文档:http:/ ...
- hdu1034 简单模拟
这里开一个二维数组.num[105][2]; 我也不知道N有多少,随便开的, 那么这里num[i][0] 表示当前 第 i 个人拥有的糖果数,num[i][1]表示他上面一个人分给他的糖果数.详 ...
- Odoo超售订单
当 交付给客户的货物多于订购的数量时,就形成'超售'状态: 对于超售的部分,需要进行开票处理,以及根据情况修改交货 发生超售的前提是,产品开票策略为 '按订购数量开票' 同时需要 允许 ...