我正试图将contentDescription传递到自定义步骤定义中,但收效甚微,而且我不确定自己能不能做到,那里几乎没有帮助,所以我有点不知所措。
所以我已经启动了calabash android控制台然后启动测试服务器然后查询("TextView"),返回TextView中的元素列表,该列表中为contentDescription,每个元素都有一个字符串值,例如"thisIsValue">
现在我在我的功能文件中写了一个步骤:
然后我触摸内容描述"thisIsValue"文本
我的自定义步骤方法的语法是:
然后/^I触摸contentDescription text(\d+)$/do|text,contentDescription|tap_when_element_exists("contentDescription contentDescription:#{arg1}")
我开始认为,对于一个表单上同一文本的多个值,传递contentDescription是不可能的,由于xamarin表单的生成方式,使用ID是不可行的。在我们的例子中,另一个选项是索引,但这并不是很好。
谢谢大家。
格雷姆
关于步骤定义,几乎没有错误的细节。
(d+)
正则表达式表示,您只在contentDescription中查找带数字的元素- 您将一个值(上面提到的仅限数字的值)传递到块中,然后期望传递两个值(
text
和contentDescription
) - 您应该点击类型为
TextView
、ImageView
、*
等的元素,但您想要点击contentDescription
元素 - 您希望使用值为
arg1
的contentDescription
敲击元素,但块中没有arg1
- 不要忘记查询中
contentDescription
值周围的撇号
所以,你的步骤定义可能应该是这样的:
Then /^I touch contentDescription text: (.*?)$/ do |arg1|
tap_when_element_exists("TextView contentDescription:'#{arg1}'")
end
@kjuri-您的解决方案现在已经工作了,在我的windows环境设置中,它似乎看到了不正确的步骤def,我清除了文件夹并重新开始-基本上是再次打开和关闭它!!非常感谢你在这件事上的耐心和帮助。。非常感谢。总结这一工作:
然后/^我触摸内容描述"(.*?)"text$/do|text|tap_when_element_exists("RadioButton内容描述:'#{text}'")结束