Skip to content

Commit 3b831b0

Browse files
Return invisible match if no visible result
1 parent cdb11b6 commit 3b831b0

File tree

1 file changed

+20
-7
lines changed

1 file changed

+20
-7
lines changed

lib/appium_lib/ios/element/generic.rb

+20-7
Original file line numberDiff line numberDiff line change
@@ -31,22 +31,35 @@ def name_contains_js
3131
# execute_script 'au.mainApp.getNameContains("sign")'
3232
# execute_script 'au.mainApp.getNameContains("zzz")'
3333
# must check .isVisible or a hidden element may be returned.
34-
# .tap() will error on invisible elements.
34+
# .tap() may error on invisible elements.
35+
# if there are no visible elements though, then it's useful
36+
# to .tap() on an invisible element.
3537
<<-JS
3638
UIAElement.prototype.getNameContains = function(targetName) {
3739
var target = UIATarget.localTarget();
3840
target.pushTimeout(0);
39-
var search = "(name contains[c] '" + targetName + "' || label contains[c] '" + targetName + "') && visible == 1";
41+
var search = "name contains[c] '" + targetName + "' || label contains[c] '" + targetName + "'";
42+
var result = {};
43+
result.type = function() { return 'UIAElementNil'; };
44+
result.isVisible = function() { return -1; };
45+
4046
var searchElements = function(element) {
4147
var children = element.elements();
42-
var result = children.firstWithPredicate(search);
43-
if (result.type() !== 'UIAElementNil' && result.isVisible() === 1) {
44-
return result;
48+
var results = children.withPredicate(search);
49+
50+
for (var resIdx = 0, resLen = results.length; resIdx < resLen; resIdx++) {
51+
var tmp = results[resIdx];
52+
if (tmp.type() !== 'UIAElementNil') {
53+
result = tmp;
54+
if (tmp.isVisible() === 1) {
55+
return tmp;
56+
}
57+
}
4558
}
4659
4760
for ( var a = 0, len = children.length; a < len; a++) {
48-
result = searchElements(children[a]);
49-
if (result.type() !== 'UIAElementNil') {
61+
searchElements(children[a]);
62+
if (result.type() !== 'UIAElementNil' && result.isVisible() === 1) {
5063
return result;
5164
}
5265
}

0 commit comments

Comments
 (0)