Этот код отлично работает против Chrome в локальном режиме (т. Е. На ПК) ...
IWebElement widget = Driver.FindElements(widgetLocator).FirstOrDefault(x => x.Displayed);
... но выдает следующее при использовании против Appium 1.9.1 для разговора с Android 8.0.0 :
OpenQA.Selenium.WebDriverException: 'При обработке команды произошла неизвестная ошибка на стороне сервера. Исходная ошибка: неизвестная ошибка: Аргумент isShown должен иметь тип Element
(Информация о сеансе: chrome = 73.0.3683.90)
(Информация о драйвере: chromedriver = 2.44.609538
Браузер запускается на Android, переходит на страницу нашего сайта, которую он должен, и в большинстве случаев работает нормально. Но, Отображаемый всегда бросает вышеупомянутое без дальнейшего объяснения. Кто-нибудь видел это?
Я пытался использовать ExecuteJavaScript()
для проверки видимости, но в OpenQA.Selenium ExecuteJavaScript()
возвращается void , а не bool
, как на других платформах. Я пытался, включен, но это не делает то, что я после. Я позаимствовал функцию IsElementVisible()
коллеги, как показано ниже, но это также выдает:
public static bool IsElementVisible(IWebDriver driver, By locator)
{
WebDriverWait wait = new WebDriverWait(driver,System.TimeSpan.FromMinutes(1));
WebDriverWait w = new WebDriverWait(driver, TimeSpan.FromMinutes(1));
try
{
wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(locator));
}
catch (Exception ex)
{
return false;
}
return true;
}
И, наконец, я попытался FindElement
на элементе, который я ищу, с помощью CssSelector
, ClassName
и всего, что я мог придумать, но безуспешно (они не могут надежно найти только «видимое»). версия элемента).
Для справки я пытаюсь "перенести" некоторые существующие тестовые сценарии, которые работают с Chrome на ПК через WebDriver , чтобы протестировать тот же веб-сайт на Android через Appium. Этот устаревший код использует. Отображается во многих местах, и если я не могу найти надежную альтернативу в мобильной ситуации, у нас возникнут некоторые проблемы.