. Отображается в C # бросает при тестировании браузера на Android 8.0.0 через Appium 1.9.1 - PullRequest
1 голос
/ 17 апреля 2019

Этот код отлично работает против 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. Этот устаревший код использует. Отображается во многих местах, и если я не могу найти надежную альтернативу в мобильной ситуации, у нас возникнут некоторые проблемы.

Ответы [ 2 ]

0 голосов
/ 17 апреля 2019

Обновление до Appium WebDriver 4.0.0.4 бета решило проблему для меня.

0 голосов
/ 17 апреля 2019

Пожалуйста, найдите ниже код, который я отредактировал как вы видите в своем исключении, он говорит: «Аргумент isShown должен иметь тип Element», это означает, какой тип элемента вы передаете, пожалуйста, сообщите нам, если это решение сработало

Исключение:

OpenQA.Selenium.WebDriverException: 'An unknown server-side error occurred while processing the command. Original error: unknown error: Argument to isShown must be of type Element (Session info: chrome=73.0.3683.90) (Driver info: chromedriver=2.44.609538

Код отредактирован:

public static bool IsElementVisible(IWebDriver driver, String locator)
{
    WebDriverWait wait = new WebDriverWait(driver,System.TimeSpan.FromMinutes(1));
    WebDriverWait w = new WebDriverWait(driver, TimeSpan.FromMinutes(1));
    try
    {
        wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(By.xpath(locator)));
    }
    catch (Exception ex)
    {
        ex.printStackTrace();
        return false;
    }
    return true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...