У меня проблема с автоматизацией веб-приложения с помощью веб-драйвера selenium.
На веб-странице есть кнопка, при нажатии которой открывается новое окно.Когда я использую следующий код, он выдает 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);
, потому что, если открытию окна требуется больше времени, код может дать сбой, а если окно открывается быстро, то это делает ненужным медленное тестирование.
Есть ли способ узнать, когда окно открылось, а затем тест может возобновить свое выполнение?