我正在使用calabash-android来测试我的应用。在pre-defined steps它有一堆“等待”步骤,但它只有“然后我等待视图出现id”。
我需要等待字符串R.string.final_result
出现。
我想知道,我怎么能等待ID出现的字符串?我需要等待字符串资源的id,因为字符串可以在我的应用程序中本地化。
如果无法使用预定义的步骤,我该如何创建一个步骤呢?
答案 0 :(得分:1)
鳍 您可以先使用wait_poll方法等待元素。一旦它出现,你可以得到它的文本值。因为该字符串将作为元素的属性值。查看.feature文件的代码
Then I should wait for the text Final Result
和.rb文件中的代码,
Then(/^I should wait for the text Final Result$/) do
#this wait_poll method will wait untill element with specified id exists.
wait_poll(:until_exists => "* marked:'#{id}'", :timeout => 20)do
#code, you can run while waiting
end
end
答案 1 :(得分:0)
步骤示例。您可以将*
替换为您用于标签的任何课程。
Then(/^I wait for text with id "(.*?)" to appear$/) do |id|
wait_for_element_exists(“* id:’#{key}’”)
end
然后在步骤定义中使用它:
Then I wait for text with id "final_result" to appear
另外,如果你不喜欢id的想法,你可以创建一个方法,根据语言和你传递给它的密钥返回字符串本身,你可以处理本地化办法。例如,带有xml字符串文件的粗略骨架
def get_string_from_strings_file(key, language)
file_path = "#{PATH_TO_STRINGS_DIR}/#{language}"
xml_string = File.open(file_path)
s = string_xml.xpath("//string[@name='#{key}']/text()")
raise 'No string found' if s == nil
s
end
并检查步骤中的文字。