calabash-android:等待出现id的字符串

时间:2016-08-31 07:37:12

标签: android ruby cucumber calabash calabash-android

我正在使用calabash-android来测试我的应用。在pre-defined steps它有一堆“等待”步骤,但它只有“然后我等待视图出现id”。

我需要等待字符串R.string.final_result出现。

我想知道,我怎么能等待ID出现的字符串?我需要等待字符串资源的id,因为字符串可以在我的应用程序中本地化。

如果无法使用预定义的步骤,我该如何创建一个步骤呢?

2 个答案:

答案 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

并检查步骤中的文字。