Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 15009d4

Browse filesBrowse files
#30 is finished.
1 parent 69c2e5c commit 15009d4
Copy full SHA for 15009d4

File tree

Expand file treeCollapse file tree

8 files changed

+287
-13
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

8 files changed

+287
-13
lines changed
Open diff view settings
Collapse file

‎sample-code/examples/java/junit/src/test/java/com/saucelabs/appium/AndroidPageObjectTest_ByAllPossible.java‎

Copy file name to clipboardExpand all lines: sample-code/examples/java/junit/src/test/java/com/saucelabs/appium/AndroidPageObjectTest_ByAllPossible.java
+16-2Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,23 +17,37 @@
1717
import org.openqa.selenium.support.PageFactory;
1818

1919
import com.saucelabs.appium.page_object.android.ApiDemosListViewScreenByAllPossible;
20+
import com.saucelabs.appium.page_object.android.ApiDemosListViewScreenChaided;
21+
import com.saucelabs.appium.page_object.android.ApiDemosListViewScreenSimple;
22+
import com.saucelabs.appium.page_object.ios.UICatalogScreenSimple;
2023

24+
/**
25+
* Please read about Page Object design pattern here:
26+
* https://code.google.com/p/selenium/wiki/PageObjects
27+
*
28+
* Please look at:
29+
* {@link ApiDemosListViewScreenSimple}
30+
* {@link ApiDemosListViewScreenChaided}
31+
* {@link ApiDemosListViewScreenByAllPossible}
32+
* {@link UICatalogScreenSimple}
33+
*
34+
*/
2135
public class AndroidPageObjectTest_ByAllPossible {
2236

2337
private WebDriver driver;
2438
private ApiDemosListViewScreenByAllPossible apiDemosPageObject;
2539

2640
@Before
2741
public void setUp() throws Exception {
28-
File appDir = new File("src/test/java/io/appium/java_client");
42+
File classpathRoot = new File(System.getProperty("user.dir"));
43+
File appDir = new File(classpathRoot, "../../../apps/ApiDemos/bin");
2944
File app = new File(appDir, "ApiDemos-debug.apk");
3045
DesiredCapabilities capabilities = new DesiredCapabilities();
3146
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");
3247
capabilities.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
3348
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
3449

3550
apiDemosPageObject = new ApiDemosListViewScreenByAllPossible();
36-
//This time out is set because test can be run on slow Android SDK emulator
3751
PageFactory.initElements(new AppiumFieldDecorator(driver, 5, TimeUnit.SECONDS),
3852
apiDemosPageObject);
3953
}
Collapse file

‎sample-code/examples/java/junit/src/test/java/com/saucelabs/appium/AndroidPageObjectTest_Chained.java‎

Copy file name to clipboardExpand all lines: sample-code/examples/java/junit/src/test/java/com/saucelabs/appium/AndroidPageObjectTest_Chained.java
+16-2Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,24 +16,38 @@
1616
import org.openqa.selenium.remote.DesiredCapabilities;
1717
import org.openqa.selenium.support.PageFactory;
1818

19+
import com.saucelabs.appium.page_object.android.ApiDemosListViewScreenByAllPossible;
1920
import com.saucelabs.appium.page_object.android.ApiDemosListViewScreenChaided;
21+
import com.saucelabs.appium.page_object.android.ApiDemosListViewScreenSimple;
22+
import com.saucelabs.appium.page_object.ios.UICatalogScreenSimple;
2023

24+
/**
25+
* Please read about Page Object design pattern here:
26+
* https://code.google.com/p/selenium/wiki/PageObjects
27+
*
28+
* Please look at:
29+
* {@link ApiDemosListViewScreenSimple}
30+
* {@link ApiDemosListViewScreenChaided}
31+
* {@link ApiDemosListViewScreenByAllPossible}
32+
* {@link UICatalogScreenSimple}
33+
*
34+
*/
2135
public class AndroidPageObjectTest_Chained {
2236

2337
private WebDriver driver;
2438
private ApiDemosListViewScreenChaided apiDemosPageObject;
2539

2640
@Before
2741
public void setUp() throws Exception {
28-
File appDir = new File("src/test/java/io/appium/java_client");
42+
File classpathRoot = new File(System.getProperty("user.dir"));
43+
File appDir = new File(classpathRoot, "../../../apps/ApiDemos/bin");
2944
File app = new File(appDir, "ApiDemos-debug.apk");
3045
DesiredCapabilities capabilities = new DesiredCapabilities();
3146
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");
3247
capabilities.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
3348
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
3449

3550
apiDemosPageObject = new ApiDemosListViewScreenChaided();
36-
//This time out is set because test can be run on slow Android SDK emulator
3751
PageFactory.initElements(new AppiumFieldDecorator(driver, 5, TimeUnit.SECONDS),
3852
apiDemosPageObject);
3953
}
Collapse file
+151Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
package com.saucelabs.appium;
2+
3+
import io.appium.java_client.android.AndroidDriver;
4+
import io.appium.java_client.pagefactory.AppiumFieldDecorator;
5+
import io.appium.java_client.remote.MobileCapabilityType;
6+
7+
import java.io.File;
8+
import java.net.URL;
9+
import java.util.NoSuchElementException;
10+
import java.util.concurrent.TimeUnit;
11+
12+
import org.junit.After;
13+
import org.junit.Assert;
14+
import org.junit.Before;
15+
import org.junit.Test;
16+
import org.openqa.selenium.By;
17+
import org.openqa.selenium.WebDriver;
18+
import org.openqa.selenium.remote.DesiredCapabilities;
19+
import org.openqa.selenium.support.PageFactory;
20+
21+
import com.saucelabs.appium.page_object.android.ApiDemosListViewScreenByAllPossible;
22+
import com.saucelabs.appium.page_object.android.ApiDemosListViewScreenChaided;
23+
import com.saucelabs.appium.page_object.android.ApiDemosListViewScreenSimple;
24+
import com.saucelabs.appium.page_object.ios.UICatalogScreenSimple;
25+
26+
/**
27+
* Please read about Page Object design pattern here:
28+
* https://code.google.com/p/selenium/wiki/PageObjects
29+
*
30+
* Please look at:
31+
* {@link ApiDemosListViewScreenSimple}
32+
* {@link ApiDemosListViewScreenChaided}
33+
* {@link ApiDemosListViewScreenByAllPossible}
34+
* {@link UICatalogScreenSimple}
35+
*
36+
*/
37+
public class AndroidPageObjectTest_PageObjectLikeComplexElement {
38+
39+
private WebDriver driver;
40+
private ApiDemosListViewScreenSimple apiDemosPageObject;
41+
42+
@Before
43+
public void setUp() throws Exception {
44+
File classpathRoot = new File(System.getProperty("user.dir"));
45+
File appDir = new File(classpathRoot, "../../../apps/ApiDemos/bin");
46+
File app = new File(appDir, "ApiDemos-debug.apk");
47+
DesiredCapabilities capabilities = new DesiredCapabilities();
48+
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");
49+
capabilities.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
50+
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
51+
52+
apiDemosPageObject = new ApiDemosListViewScreenSimple();
53+
PageFactory.initElements(new AppiumFieldDecorator(driver.
54+
findElement(By.id("android:id/list")) /*(!!!)*/
55+
, 5, TimeUnit.SECONDS),
56+
apiDemosPageObject);
57+
}
58+
59+
@After
60+
public void tearDown() throws Exception {
61+
driver.quit();
62+
}
63+
64+
@Test
65+
public void findByElementsTest() {
66+
Assert.assertNotEquals(0, apiDemosPageObject.textVieWs.size());
67+
}
68+
69+
@Test
70+
public void findByElementTest() {
71+
Assert.assertNotEquals(null, apiDemosPageObject.textView.getAttribute("text"));
72+
}
73+
74+
75+
@Test
76+
public void androidFindByElementsTest(){
77+
Assert.assertNotEquals(0, apiDemosPageObject.androidTextViews.size());
78+
}
79+
80+
@Test
81+
public void androidFindByElementTest(){
82+
Assert.assertNotEquals(null, apiDemosPageObject.androidTextView.getAttribute("text"));
83+
}
84+
85+
@Test
86+
public void checkThatElementsWereNotFoundByIOSUIAutomator(){
87+
Assert.assertEquals(0, apiDemosPageObject.iosTextViews.size());
88+
}
89+
90+
@Test
91+
public void checkThatElementWasNotFoundByIOSUIAutomator(){
92+
NoSuchElementException nsee = null;
93+
try{
94+
apiDemosPageObject.iosTextView.getAttribute("text");
95+
}
96+
catch (Exception e){
97+
nsee = (NoSuchElementException) e;
98+
}
99+
Assert.assertNotNull(nsee);
100+
}
101+
102+
@Test
103+
public void androidOrIOSFindByElementsTest(){
104+
Assert.assertNotEquals(0, apiDemosPageObject.androidOriOsTextViews.size());
105+
}
106+
107+
@Test
108+
public void androidOrIOSFindByElementTest(){
109+
Assert.assertNotEquals(null, apiDemosPageObject.androidOriOsTextView.getAttribute("text"));
110+
}
111+
112+
@Test
113+
public void androidFindByUIAutomatorElementsTest(){
114+
Assert.assertNotEquals(0, apiDemosPageObject.androidUIAutomatorViews.size());
115+
}
116+
117+
@Test
118+
public void androidFindByUIAutomatorElementTest(){
119+
Assert.assertNotEquals(null, apiDemosPageObject.androidUIAutomatorView.getAttribute("text"));
120+
}
121+
122+
@Test
123+
public void areMobileElementsTest(){
124+
Assert.assertNotEquals(0, apiDemosPageObject.mobileElementViews.size());
125+
}
126+
127+
@Test
128+
public void isMobileElementTest(){
129+
Assert.assertNotEquals(null, apiDemosPageObject.mobileElementView.getAttribute("text"));
130+
}
131+
132+
@Test
133+
public void areMobileElements_FindByTest(){
134+
Assert.assertNotEquals(0, apiDemosPageObject.mobiletextVieWs.size());
135+
}
136+
137+
@Test
138+
public void isMobileElement_FindByTest(){
139+
Assert.assertNotEquals(null, apiDemosPageObject.mobiletextVieW.getAttribute("text"));
140+
}
141+
142+
@Test
143+
public void areRemoteElementsTest(){
144+
Assert.assertNotEquals(0, apiDemosPageObject.remoteElementViews.size());
145+
}
146+
147+
@Test
148+
public void isRemoteElementTest(){
149+
Assert.assertNotEquals(null, apiDemosPageObject.remotetextVieW.getAttribute("text"));
150+
}
151+
}
Collapse file

‎sample-code/examples/java/junit/src/test/java/com/saucelabs/appium/iOSPageObjectTest.java‎

Copy file name to clipboardExpand all lines: sample-code/examples/java/junit/src/test/java/com/saucelabs/appium/iOSPageObjectTest.java
+18-2Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,33 @@
1515
import org.openqa.selenium.WebDriver;
1616
import org.openqa.selenium.remote.DesiredCapabilities;
1717
import org.openqa.selenium.support.PageFactory;
18+
19+
import com.saucelabs.appium.page_object.android.ApiDemosListViewScreenByAllPossible;
20+
import com.saucelabs.appium.page_object.android.ApiDemosListViewScreenChaided;
21+
import com.saucelabs.appium.page_object.android.ApiDemosListViewScreenSimple;
1822
import com.saucelabs.appium.page_object.ios.UICatalogScreenSimple;
1923

24+
/**
25+
* Please read about Page Object design pattern here:
26+
* https://code.google.com/p/selenium/wiki/PageObjects
27+
*
28+
* Please look at:
29+
* {@link ApiDemosListViewScreenSimple}
30+
* {@link ApiDemosListViewScreenChaided}
31+
* {@link ApiDemosListViewScreenByAllPossible}
32+
* {@link UICatalogScreenSimple}
33+
*
34+
*/
2035
public class iOSPageObjectTest {
2136

2237
private WebDriver driver;
2338
private UICatalogScreenSimple uiCatalog;
2439

2540
@Before
2641
public void setUp() throws Exception {
27-
File appDir = new File("src/test/java/io/appium/java_client");
28-
File app = new File(appDir, "TestApp.app.zip");
42+
File appDir = new File(System.getProperty("user.dir"),
43+
"../../../apps/TestApp/build/Release-iphonesimulator");
44+
File app = new File(appDir, "TestApp.app");
2945
DesiredCapabilities capabilities = new DesiredCapabilities();
3046
capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "");
3147
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "7.1");
Collapse file

‎sample-code/examples/java/junit/src/test/java/com/saucelabs/appium/page_object/android/ApiDemosListViewScreenByAllPossible.java‎

Copy file name to clipboardExpand all lines: sample-code/examples/java/junit/src/test/java/com/saucelabs/appium/page_object/android/ApiDemosListViewScreenByAllPossible.java
+20-2Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,43 @@
33
import io.appium.java_client.MobileElement;
44

55
import java.util.List;
6+
67
import io.appium.java_client.android.AndroidElement;
78
import io.appium.java_client.pagefactory.AndroidFindAll;
89
import io.appium.java_client.pagefactory.AndroidFindBy;
910

11+
/**
12+
*
13+
* @author TikhomirovSergey
14+
* Here is the common sample shows how to use
15+
* {@link AndroidFindAll} annotation to describe all possible
16+
* locators of a target element. This feature should help to
17+
* reduce the number of page PageObject-classes
18+
*
19+
* It demonstrates how to declare screen elements using Appium
20+
* page objects facilities.
21+
*
22+
* About Page Object design pattern read here:
23+
* https://code.google.com/p/selenium/wiki/PageObjects
24+
*
25+
*/
1026
public class ApiDemosListViewScreenByAllPossible {
1127

1228
@AndroidFindAll({
1329
@AndroidFindBy(uiAutomator = "new UiSelector().resourceId(\"android:id/Fakecontent\")"),
1430
@AndroidFindBy(id = "android:id/Faketext1"),
1531
@AndroidFindBy(uiAutomator = "new UiSelector().resourceId(\"android:id/list\")"), //by this locator element is found
1632
@AndroidFindBy(id = "android:id/FakeId")
17-
})
33+
}) //If here is a list then it will be filled by all elements
34+
//which are found using all declared locators
1835
public List<MobileElement> findAllElementViews;
1936

2037
@AndroidFindAll({
2138
@AndroidFindBy(uiAutomator = "new UiSelector().resourceId(\"android:id/Fakecontent\")"),
2239
@AndroidFindBy(id = "android:id/Faketext1"),
2340
@AndroidFindBy(uiAutomator = "new UiSelector().resourceId(\"android:id/list\")"), //by this locator element is found
2441
@AndroidFindBy(id = "android:id/FakeId")
25-
})
42+
}) //If here is a single element then it will find the first
43+
//element that is found by any of declared locators
2644
public AndroidElement findAllElementView;
2745
}
Collapse file

‎sample-code/examples/java/junit/src/test/java/com/saucelabs/appium/page_object/android/ApiDemosListViewScreenChaided.java‎

Copy file name to clipboardExpand all lines: sample-code/examples/java/junit/src/test/java/com/saucelabs/appium/page_object/android/ApiDemosListViewScreenChaided.java
+21-2Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,38 @@
11
package com.saucelabs.appium.page_object.android;
22

33
import io.appium.java_client.android.AndroidElement;
4+
45
import java.util.List;
6+
57
import org.openqa.selenium.WebElement;
8+
69
import io.appium.java_client.pagefactory.AndroidFindBy;
710
import io.appium.java_client.pagefactory.AndroidFindBys;
811
import io.appium.java_client.pagefactory.iOSFindBy;
912
import io.appium.java_client.pagefactory.iOSFindBys;
1013

14+
/**
15+
*
16+
* @author TikhomirovSergey
17+
* Here is the common sample shows how to use
18+
* {@link AndroidFindBys} annotation to describe the chain of the
19+
* searching for the target element of a native Android app content.
20+
*
21+
* It demonstrates how to declare screen elements using Appium
22+
* page objects facilities.
23+
*
24+
* About Page Object design pattern read here:
25+
* https://code.google.com/p/selenium/wiki/PageObjects
26+
*
27+
*/
1128
public class ApiDemosListViewScreenChaided {
1229

1330

1431
@AndroidFindBys({
15-
@AndroidFindBy(uiAutomator = "new UiSelector().resourceId(\"android:id/list\")"),
16-
@AndroidFindBy(className = "android.widget.TextView")
32+
@AndroidFindBy(uiAutomator = "new UiSelector().resourceId(\"android:id/list\")"), //the searching
33+
//starts here
34+
@AndroidFindBy(className = "android.widget.TextView") //this element is nested
35+
//and so on
1736
})
1837
public List<WebElement> chainElementViews;
1938

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.