Вы передаете объект 'element' этой функции.Когда функция запускается, ваш объектный элемент имеет isVisible свойство false или когда такого объекта на экране нет, вы передаете [object UIAElement Nil] ,Попытка получить свойство isVisible для этого типа объекта в любое время всегда будет возвращать false .
Если вы хотите, чтобы эта функция работала, вам нужно передать элемент в качестве функции в вашу функцию.Поэтому вместо
if (element.isVisible())
вам сначала нужно получить объект элемента и попытаться получить свойство isVisible ().
if (target.manWindow().elements()[0].isVisible())
После этого изменения не будет необходимости передавать объект 'element', так как эта функция будет работать только с одним элементом.
Чтобы эта функция работала с любым элементом, вам нужно передать не объект 'element', а функцию, которая возвращает объект 'element', который вы хотите проверить.Это пример:
var target = ...;
var mainWindow = ...;
//function that returns firstObject
var firstElement = function()
{
return mainWindow.elements()[0];
}
//function that returns secondObject
var secondElement = function()
{
return mainWindow.elements()[1];
}
// это то, что вам нужно изменить в вашей функции ожидания.Измените
if (element.isVisible())
на
if (element().isVisible())
Пример вызова вашей функции:
waitForElement(firstElement, 10, 1);
waitForElement(secondElement, 10, 1);
ПРИМЕЧАНИЕ: если вы вызовете функцию waitForElement с firstElement () - функция завершится с той же ошибкой.Это усложняет ваши тесты, но работает.