Я столкнулся с проблемой автоматизации веб-приложения с помощью веб-драйвера селена.
На веб-странице есть кнопка, которая при нажатии открывается в новом окне. Когда я использую следующий код, он бросает OpenQA.Selenium.NoSuchWindowException: No window found
WebDriver.FindElement(By.Id("id of the button that opens new window")).Click();
//Switch to new window
_WebDriver.SwitchTo().Window("new window name");
//Click on button present on the newly opened window
_WebDriver.FindElement(By.Id("id of button present on newly opened window")).Click();
Чтобы решить вышеупомянутую проблему, я добавляю Thread.Sleep(50000);
между нажатиями кнопок и SwitchTo
.
WebDriver.FindElement(By.Id("id of the button that opens new window")).Click();
Thread.Sleep(50000); //wait
//Switch to new window
_WebDriver.SwitchTo().Window("new window name");
//Click on button present on the newly opened window
_WebDriver.FindElement(By.Id("id of button present on newly opened window")).Click();
Он решил проблему, но я не хочу использовать оператор Thread.Sleep(50000);
, потому что если в окне требуется больше времени для открытия, код может выйти из строя, и если окно будет открыто быстро, это сделает тест медленным без необходимости.
Есть ли способ узнать, когда окно открылось, а затем тест может возобновить выполнение?