Я написал инфраструктуру автоматизации в 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. Если бы кто-нибудь мог предложить решение, это могло бы сэкономить мне время. Заранее благодарен. Ура!