首先,本地化元素的最佳做法是使用唯一ID。要做到这一点,您应该填写Xcode中应用程序元素的accessibilityIdentifier
字段。
这是识别对象的最准确的方法。之后,你可以使用查询这样的:
query("* id:'account_select_button'")
查询使用的“标记”语法寻找应用程序对象的text
或accessibilityIdentifier
特性匹配。此方法不适用于多语言应用程序或标签更改。
对于等待元素,你应该使用这个的sleep
:
wait_for_element_exists("* marked:'Select Accounts'", :timeout => 10)
touch("* marked:'Select Accounts'")
默认情况下,葫芦查询仅搜索可见对象的属性。如果一个元素是视域之外,需要滚动,直到出现元素之前,你可以用它做任何事情:
while (query("* marked:'Select Accounts'").empty?) == true
swipe :up #it performs scroll down, swipe :up equals scroll up
sleep 1 #in this case you have to wait between two swipes
end
我从来没有尝试过,但还有另一种方式。据我所知,这个表达式在每个视图中查询,而不管元素的可见性。
query("all marked:'Select Accounts'")
query("all view marked:'Select Accounts'")
query("all * marked:'Select Accounts'")