[上下文]
附录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_源]
<?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中看到的,它似乎不包含该视图中的任何标签:
^{pr2}$[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.`
我终于找到了这个问题的底部,并找到了为什么包含在我的视图中的元素不可见/不可访问的原因。 问题是我为所有东西启用了“可访问性”,包括视图本身。在
当您使视图可访问时,它将视图视为一个可以访问的单个大容器,但您随后将无法访问该视图中包含的元素。在
通过简单地为我的视图禁用“Accessibility”(取消选中XCode中的框),我开始看到该视图中包含的元素。在
相关问题 更多 >
编程相关推荐