[背景]
Appium 1.6.5
XCode 8.3.3
iOS 10.3
Python 2.7
我正在尝试使用基于创建标签应用程序的XCode模板创建的基本iOS应用程序的Appium。 我的应用程序是从该模板创建的,该模板基本上有一个标签栏控制器,预先设置了2个标签。 每个选项卡显示不同的视图。 每个视图都有2个标签,上面有一些文字。
[目标]
我想编写一个Appium脚本导航到特定的选项卡,然后读取其中一个标签的文本。
[问题]
我能够找到与所选选项卡对应的视图的元素(包括)。但是,我没有看到该视图中的任何元素。
我尝试使用ID和XPATH同样的结果。
注意:我尝试访问的每个元素都启用了辅助功能并设置了辅助功能ID。我设置的每个辅助功能ID都是唯一的。
[问题]
如何使用Appium访问相关标签?或者甚至更好,我的观点中的任何元素?
[driver.page_source的输出]
<?xml version="1.0" encoding="UTF-8"?><AppiumAUT><XCUIElementTypeApplication type="XCUIElementTypeApplication" name="MyTestApp" label="MyTestApp" enabled="true" visible="true" x="0" y="0" width="375" height="667"> <XCUIElementTypeWindow type="XCUIElementTypeWindow" enabled="true" visible="true" x="0" y="0" width="375" height="667"> <XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" x="0" y="0" width="375" height="667"> <XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" x="0" y="0" width="375" height="667"> <XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" x="0" y="0" width="375" height="667"> <XCUIElementTypeOther type="XCUIElementTypeOther" name="view1" enabled="true" visible="true" x="0" y="0" width="375" height="667"/> </XCUIElementTypeOther> </XCUIElementTypeOther> <XCUIElementTypeTabBar type="XCUIElementTypeTabBar" enabled="true" visible="true" x="0" y="618" width="375" height="49"/> </XCUIElementTypeOther> </XCUIElementTypeWindow> <XCUIElementTypeWindow type="XCUIElementTypeWindow" enabled="true" visible="false" x="0" y="0" width="375" height="667"> <XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="false" x="0" y="0" width="375" height="667"/> </XCUIElementTypeWindow> <XCUIElementTypeWindow type="XCUIElementTypeWindow" enabled="true" visible="true" x="0" y="0" width="375" height="667"> <XCUIElementTypeStatusBar type="XCUIElementTypeStatusBar" enabled="true" visible="true" x="0" y="0" width="375" height="20"> <XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="false" x="0" y="0" width="375" height="20"/> <XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" x="0" y="0" width="375" height="20"> <XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" x="6" y="0" width="39" height="20"/> <XCUIElementTypeOther type="XCUIElementTypeOther" value="SSID" name="3 of 3 Wi-Fi bars" label="3 of 3 Wi-Fi bars" enabled="true" visible="true" x="50" y="0" width="13" height="20"/> <XCUIElementTypeOther type="XCUIElementTypeOther" name="10:35 AM" label="10:35 AM" enabled="true" visible="true" x="161" y="0" width="56" height="20"/> <XCUIElementTypeOther type="XCUIElementTypeOther" name="-100% battery power" label="-100% battery power" enabled="true" visible="true" x="337" y="0" width="33" height="20"/> </XCUIElementTypeOther> </XCUIElementTypeStatusBar> </XCUIElementTypeWindow> </XCUIElementTypeApplication></AppiumAUT>
View1是我的两个视图之一,正如您在上面的XML中所看到的,它似乎不包含该视图中的任何标签:
<XCUIElementTypeOther type="XCUIElementTypeOther" name="view1" enabled="true" visible="true" x="0" y="0" width="375" height="667"/>
[Python代码]
这是我正在使用的代码:
driver = webdriver.Remote(get_appium_server(), desired_capabilities=get_capabilities())
driver.find_element_by_id('view1') # This works fine
driver.find_element_by_id('view1label1') # The code fails here despite the fact that this accessibility ID exists for one of the labels underneath 'view1'
当我运行它时,我收到以下错误:
Traceback (most recent call last):
File "/some_path/Appium.py", line 33, in <module>
mypythonappiumfunction()
File "/some_path/Appium.py", line 28, in mypythonappiumfunction
driver.find_element_by_id('view1label1') # The code fails here despite the fact that this accessibility ID exists for one of the labels underneath 'view1'
File "/some_path/robot/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 289, in find_element_by_id
return self.find_element(by=By.ID, value=id_)
File "/some_path/robot/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 791, in find_element
'value': value})['value']
File "/some_path/robot/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 256, in execute
self.error_handler.check_response(response)
File "/some_path/robot/lib/python2.7/site-packages/appium/webdriver/errorhandler.py", line 29, in check_response
raise wde
selenium.common.exceptions.NoSuchElementException: Message: An element could not be located on the page using the given search parameters.`
答案 0 :(得分:0)
我终于深入了解了这一点,并找出了为什么我视图中包含的元素不可见/无法访问。 问题是我启用了#34; Accessibility&#34;包括视图本身在内的所有内容。
当您可以访问视图时,它会将视图视为您可以访问的单个大容器,但您将无法访问该视图中包含的元素。
只需禁用&#34;辅助功能&#34; (取消选中XCode中的框),我开始看到该视图中包含的元素。