如何使用TextContent使用Calabash在Android中查找WebView元素

时间:2014-03-25 19:36:01

标签: android css regex webview calabash

我在ios应用程序中有一个基本没有id或类的webview。 (我知道,对吧?) 但它确实有一个textContent字段,我想用它来选择元素。

This is the element I want to find:

{"rect"=>
   {"center_x"=>307.5,
    "left"=>295,
    "bottom"=>136,
    "right"=>320,
    "top"=>93,
    "width"=>25,
    "height"=>43,
    "center_y"=>178.5},
  "nodeName"=>"LI",
  "id"=>"",
  "textContent"=>"!!!   I WANT TO FIND IT BY THIS   !!!",
  "center"=>{"X"=>307.5, "Y"=>178.5},
  "nodeType"=>"ELEMENT_NODE",
  "webView"=>
   "<UIWebView: 0xe2e1400; frame = (0 0; 320 504); clipsToBounds = YES; autoresize = W+H
  "class"=>"arrow",
  "html"=>"<div class=\"arrow\"></div>"}

所以我能够使用css伪选择器alá

找到它
query("webView css:'el:first-child'")

我可以通过使用结果数组中的哈希来找到它

query("webView css:'li'").select {|element| element["textContent"] == "!!!   I WANT TO FIND IT BY THIS   !!!}

我可以重构一下使用正则表达式

query("webView css:'li'").select {|element| element["textContent"] =~ /I WANT/}

但这一切感觉真的很脏。非常非Calabashy。有没有更好的方法来写这个?

2 个答案:

答案 0 :(得分:1)

我没有尝试过您的确切设置。但我经常在标签上使用LIKE比较查询。 这会解决你的问题吗?

离。 element_exists(&#34;标签{text LIKE&#39; 我想找到&#39;}&#34;)

答案 1 :(得分:1)

我结束了这个:

查询(&#34; webView css:&#39; TITLE&#39; {textContent CONTAINS'I WANT'}&#34;)

由于代码中缺少可访问性标签,因此它可以更加一致地使用这些特定的Web视图。