Я использовал следующую структуру для тестов пользовательского интерфейса приложения angular, и обе версии работали отлично. Тестовый код и исходный код приложения были на виртуальных машинах TFS, Windows.
- Версия 1: SpecFlow, SpecFlow + SpecRun3, C# веб-драйвер селена, объектная модель страницы, транспортир.
- Версия 2: Spe c Flow, Nunit, C# веб-драйвер селена, объектная модель страницы, транспортир.
Среда: Framework = "net461", Docker 2.2.0.5 (43884), Ubuntu 18.04
Примечание: транспортир представляет собой пакет Nuget для тестирования angular страниц и работает так же отлично, как и сам транспортир без использования каких-либо явные ожидания.
Транспортир прекратил поиск веб-элементов на страницах angular после перемещения приложения в Linux - Docker контейнеров, и ошибка «Сообщение: время ожидания сценария».
public class HomePage
{
public HomePage()
{
PageFactory.InitElements(Driver.GetNgDriver(), this);
}
[FindsBy(How = How.XPath, Using = " //button[@class='button-asd']")]
public IWebElement HomeButton { get; set; }
}
Когда я могу изменить тип драйвера в конструкторе страницы angular как «PageFactory.InitElements (Driver.GetDriver (), this);» затем он становится обычным C# + селеном, и нам приходится иметь дело со всеми веб-элементами индивидуально, используя явные ожидания. Проблема повторяется аналогичным образом в этих условиях.
- Приложение включено Linux - Docker и тестовый код находится на windows машина
- Приложение включено Linux - Docker и тестовый код включен Linux - Docker
Я хочу использовать мой простой, понятный код без явных ожиданий, как раньше.
pages.HomePage().HomeButton.Click();
Спасибо за ваши идеи.