From 7e5da3d87c64e3e0fbb3e682ea49c6d452c2e0a1 Mon Sep 17 00:00:00 2001 From: Kazuaki MATSUO Date: Wed, 8 Aug 2018 19:48:49 +0900 Subject: [PATCH 1/4] add tag view for android --- appium/webdriver/common/mobileby.py | 1 + appium/webdriver/webdriver.py | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/appium/webdriver/common/mobileby.py b/appium/webdriver/common/mobileby.py index 3e77c51eb..0a2e71294 100644 --- a/appium/webdriver/common/mobileby.py +++ b/appium/webdriver/common/mobileby.py @@ -20,5 +20,6 @@ class MobileBy(By): IOS_UIAUTOMATION = '-ios uiautomation' IOS_CLASS_CHAIN = '-ios class chain' ANDROID_UIAUTOMATOR = '-android uiautomator' + ANDROID_TAGVIEW = '-android viewtag' ACCESSIBILITY_ID = 'accessibility id' IMAGE = '-image' diff --git a/appium/webdriver/webdriver.py b/appium/webdriver/webdriver.py index 94deb79b5..3414b464e 100644 --- a/appium/webdriver/webdriver.py +++ b/appium/webdriver/webdriver.py @@ -341,6 +341,30 @@ def find_elements_by_android_uiautomator(self, uia_string): """ return self.find_elements(by=By.ANDROID_UIAUTOMATOR, value=uia_string) + def find_element_by_android_viewtag(self, tag_string): + """Finds element by tag in Android. + https://developer.android.com/reference/android/view/View + + :Args: + - tag_string - The element name by tag view in Android + + :Usage: + driver.find_element_by_android_viewtag('a tag name') + """ + return self.find_element(by=By.ANDROID_TAGVIEW, value=tag_string) + + def find_elements_by_android_viewtag(self, tag_string): + """Finds element by tag in Android. + https://developer.android.com/reference/android/view/View + + :Args: + - tag_string - The element name by tag view in Android + + :Usage: + driver.find_elements_by_android_viewtag('a tag name') + """ + return self.find_elements(by=By.ANDROID_TAGVIEW, value=tag_string) + def find_element_by_image(self, png_img_path, match_threshold=DEFAULT_MATCH_THRESHOLD): """Finds a portion of a screenshot by an image. From 44faebb6c5d098f1393e6b0cd64520edfcf9d939 Mon Sep 17 00:00:00 2001 From: Kazuaki MATSUO Date: Wed, 8 Aug 2018 21:05:44 +0900 Subject: [PATCH 2/4] fix typo... and tweak names of arguments --- appium/webdriver/common/mobileby.py | 2 +- appium/webdriver/webdriver.py | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/appium/webdriver/common/mobileby.py b/appium/webdriver/common/mobileby.py index 0a2e71294..ce76838b2 100644 --- a/appium/webdriver/common/mobileby.py +++ b/appium/webdriver/common/mobileby.py @@ -20,6 +20,6 @@ class MobileBy(By): IOS_UIAUTOMATION = '-ios uiautomation' IOS_CLASS_CHAIN = '-ios class chain' ANDROID_UIAUTOMATOR = '-android uiautomator' - ANDROID_TAGVIEW = '-android viewtag' + ANDROID_VIEWTAG = '-android viewtag' ACCESSIBILITY_ID = 'accessibility id' IMAGE = '-image' diff --git a/appium/webdriver/webdriver.py b/appium/webdriver/webdriver.py index 3414b464e..676c8ba4b 100644 --- a/appium/webdriver/webdriver.py +++ b/appium/webdriver/webdriver.py @@ -341,29 +341,29 @@ def find_elements_by_android_uiautomator(self, uia_string): """ return self.find_elements(by=By.ANDROID_UIAUTOMATOR, value=uia_string) - def find_element_by_android_viewtag(self, tag_string): + def find_element_by_android_viewtag(self, tag): """Finds element by tag in Android. https://developer.android.com/reference/android/view/View :Args: - - tag_string - The element name by tag view in Android + - tag - The element name by tag view in Android :Usage: driver.find_element_by_android_viewtag('a tag name') """ - return self.find_element(by=By.ANDROID_TAGVIEW, value=tag_string) + return self.find_element(by=By.ANDROID_VIEWTAG, value=tag) - def find_elements_by_android_viewtag(self, tag_string): + def find_elements_by_android_viewtag(self, tag): """Finds element by tag in Android. https://developer.android.com/reference/android/view/View :Args: - - tag_string - The element name by tag view in Android + - tag - The element name by tag view in Android :Usage: driver.find_elements_by_android_viewtag('a tag name') """ - return self.find_elements(by=By.ANDROID_TAGVIEW, value=tag_string) + return self.find_elements(by=By.ANDROID_VIEWTAG, value=tag) def find_element_by_image(self, png_img_path, match_threshold=DEFAULT_MATCH_THRESHOLD): From 1cdda0b09738d96827f6aea21232cdf02f33f95d Mon Sep 17 00:00:00 2001 From: Kazuaki MATSUO Date: Wed, 8 Aug 2018 21:15:48 +0900 Subject: [PATCH 3/4] tweak docstring --- appium/webdriver/webdriver.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/appium/webdriver/webdriver.py b/appium/webdriver/webdriver.py index 676c8ba4b..e4ed72ced 100644 --- a/appium/webdriver/webdriver.py +++ b/appium/webdriver/webdriver.py @@ -346,7 +346,7 @@ def find_element_by_android_viewtag(self, tag): https://developer.android.com/reference/android/view/View :Args: - - tag - The element name by tag view in Android + - tag - The tag name of the view to look for :Usage: driver.find_element_by_android_viewtag('a tag name') @@ -358,7 +358,7 @@ def find_elements_by_android_viewtag(self, tag): https://developer.android.com/reference/android/view/View :Args: - - tag - The element name by tag view in Android + - tag - The tag name of the view to look for :Usage: driver.find_elements_by_android_viewtag('a tag name') From 2c3a6498c8a9e8f2a4f968ade73d5af68377d433 Mon Sep 17 00:00:00 2001 From: Kazuaki MATSUO Date: Wed, 8 Aug 2018 21:30:44 +0900 Subject: [PATCH 4/4] add find element by viewtag section in readme --- README.md | 16 ++++++++++++++++ appium/webdriver/webdriver.py | 8 ++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 7e90eb27e..2bd8d582a 100644 --- a/README.md +++ b/README.md @@ -159,6 +159,22 @@ els = self.driver.find_elements_by_android_uiautomator('new UiSelector().clickab self.assertIsInstance(els, list) ``` +### Finding elements by Android viewtag search + +This method allows finiding elements using [View#tags](https://developer.android.com/reference/android/view/View#tags). +This method works with [Espresso Driver](https://github.com/appium/appium-espresso-driver). + +Adds the methods `driver.find_element_by_android_viewtag` and `driver.find_elements_by_android_viewtag`. + +```python +el = self.driver.find_element_by_android_viewtag('a tag name') +self.assertIsNotNone(el) +``` + +```python +els = self.driver.find_elements_by_android_viewtag('a tag name') +self.assertIsInstance(els, list) +``` ### Finding elements by iOS predicates diff --git a/appium/webdriver/webdriver.py b/appium/webdriver/webdriver.py index e4ed72ced..acd40e30c 100644 --- a/appium/webdriver/webdriver.py +++ b/appium/webdriver/webdriver.py @@ -342,8 +342,8 @@ def find_elements_by_android_uiautomator(self, uia_string): return self.find_elements(by=By.ANDROID_UIAUTOMATOR, value=uia_string) def find_element_by_android_viewtag(self, tag): - """Finds element by tag in Android. - https://developer.android.com/reference/android/view/View + """Finds element by [View#tags](https://developer.android.com/reference/android/view/View#tags) in Android. + It works with [Espresso Driver](https://github.com/appium/appium-espresso-driver). :Args: - tag - The tag name of the view to look for @@ -354,8 +354,8 @@ def find_element_by_android_viewtag(self, tag): return self.find_element(by=By.ANDROID_VIEWTAG, value=tag) def find_elements_by_android_viewtag(self, tag): - """Finds element by tag in Android. - https://developer.android.com/reference/android/view/View + """Finds element by [View#tags](https://developer.android.com/reference/android/view/View#tags) in Android. + It works with [Espresso Driver](https://github.com/appium/appium-espresso-driver). :Args: - tag - The tag name of the view to look for