Не удалось найти элемент по следующим стратегиям: By.id; OpenQA.Selenium.WebdriverTimeoutExceltpion: истекло время ожидания через 1 секунду - PullRequest
0 голосов
/ 17 мая 2019

Я написал инфраструктуру автоматизации в VS2017 с использованием Selenium Webdriver в C # и PageObjects. Это работает абсолютно нормально в Windows. Тот же код PageObjects используется в VS2017 для MAC OS, и он там не работает, давая

OpenQA.Selenium.NoSuchElementException: Не удалось найти элемент с помощью следующих стратегий: By.Id: userNameInput;

----> OpenQA.Selenium.WebDriverTimeoutException: истекло время ожидания через 1 секунду

Я переместил свой код с VS2017 для Windows на VS2017 для Mac. Это успешно преобразовано и скомпилировано. Однако были проблемы, но я решил проблемы, связанные с веб-драйверами, и теперь код отлично работает для запуска Chrome & Safari. Но всякий раз, когда я пытаюсь найти элементы, возникает исключение. Я реализовал Explicitwaits и другие параметры, но и Safari, и Chrome на каком-то этапе дают мне ошибки при поиске элементов. Я также пытался найти элементы без POM, но это тоже не работает.

Учитывая следующую функцию, которую я написал для пользователя Signout из Dynamics CRM

    public void UserSignOut(ref ExtentTest test)
    {
        WDEx.SwitchWindows(0);
        Browser.Driver.SwitchTo().DefaultContent();
        UserIcon.Click();
        SignOut.Click();
    }

, где UserIcon -

    [FindsBy(How = How.Id, Using = @"navTabButtonChangeProfileImageLink")]
    public IWebElement UserIcon { get; set; }

и SignOut

    [FindsBy(How = How.Id, Using = "navTabButtonUserInfoSignOutId")]
    private IWebElement SignOut { get; set; }

Он должен работать точно так же, как и на Windows Chromedriver с VS2017. Если бы кто-нибудь мог предложить решение, это могло бы сэкономить мне время. Заранее благодарен. Ура!

...