[上下文]
Appium 1.6.5
XCode 8.3.3
iOS 10.3
Python 2.7
我正在用一个基本的iOS应用程序对Appium进行实验,这个应用程序是通过XCode模板创建的,它创建了一个选项卡应用程序。我的应用程序是根据这个模板创建的,它基本上有一个预先设置了2个标签的标签栏控制器。每个选项卡显示不同的视图。每个视图有两个标签,上面有一些文本。
[Goal]
我想编写一个Appium脚本,该脚本导航到一个特定的选项卡,然后读取其中一个标签的文本。
<?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>
<XCUIElementTypeOther type="XCUIElementTypeOther" name="view1" enabled="true" visible="true" x="0" y="0" width="375" height="667"/>
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.`
我终于弄清楚了这一点,并找到了为什么我的视图中包含的元素是不可见/不可访问的。问题是我启用了包括视图本身在内的所有内容的“可访问性”。
当您使视图可访问时,它将视图视为您可以访问的单个大容器,但随后您将失去对该视图中包含的元素的访问权。
通过简单地禁用视图的“可访问性”(取消XCode中的复选框),我开始看到该视图中包含的元素。
我正在尝试在我的应用程序中设置Firebase云消息。我在Firebase控制台中创建了该项目(我创建了一个新项目,没有导入以前创建的gcm项目)。我能够成功地设置项目,并在应用程序中运行它,并从firebase控制台的“通知”选项卡接收示例通知。 当试图通过APIhttps://fcm.googleapis.com/fcm/send发送数据消息时,我得到了未经授权的(401)响应。原来我使用了g
我正在学习使用MarkLogic,浏览教程等。我收到一条我不明白的错误消息。当我在查询控制台中需要创建一个新选项卡时,我单击现有选项卡行右端的加号,我收到以下错误消息而不是新选项卡: 这最近奏效了,但现在不行了。
在iOS中,将嵌套视图控制器的视图放在UIViewController的视图中通常是一种糟糕的编程实践吗?比如说,我想有一种互动元素来响应用户的触摸,但只占屏幕的25%。 我想我会将这个嵌套视图控制器添加到UIViewController中,方法如下:
我有一个表,显示Laravel的@Foreach循环的数据。该循环被限制为3。但是我想在表内的图标被限制为2只。这是上菜时的界面: 刀片: 那是我想限制的元素。我通过控制器创建它。像这样: 那么,如何限制表中的图标仅显示2,而表中的数据最多显示3?我一直在寻找这个问题,但仍然没有找到它。我希望你们能帮助我,伙计们。先谢谢你。
我的故事板是这样安排的。 红色:搜索到... 橙色:嵌入了... 绿色:视图控制器的导航控制器 我想让我的中间选项卡视图(绿色)呈现自己的模式,有点像reddit应用程序如何做它的中间‘张贴到reddit’按钮。当这个中间视图被取消时,将返回到先前打开的原始选项卡。如何才能做到这一点呢?
我正在编写一个具有多个视图的iOS应用程序。我已经将应用程序设置为使用基于ViewController的状态栏样式,这允许我使用以下代码 这就像预期的那样。 然后我将视图嵌入到导航控制器中,并将Barbuttonite与showSegue连接起来。此后,视图的ViewController切换为忽略样式设置,并显示默认的黑色状态栏。