Драйвер Selenium. Название, возвращающее разные значения C#
В моей программе драйвер нажимает на страницу, получает ее заголовок и помещает ее в строку. В отладке я вижу, что driver.Title является заголовком новой страницы, но строка содержит заголовок предыдущей страницы. Как я могу это исправить и сделать вторую строку с заголовком назначенной строке?
//Title == "Supreme"
driver.Navigate().GoToUrl(baseURL + "/shop/all");
driver.FindElement(By.XPath(".//*[@id='container']/article[" + num.ToString() + "]/div/a/img")).Click();
//title of this page should be Supreme: Supreme®/Schott® Shearling Bomber - Lime Green
string title = driver.Title;
//returns first title and not title of new page
1 ответ
Решение
Это может быть проблема синхронизации, поэтому вы видите правильное значение при более медленной отладке, но не при запуске сценария. Вы можете использовать явное ожидание с ExpectedConditions TitleIs
или же TitleContains
ждать правильного заголовка
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until(ExpectedConditions.TitleIs("Supreme: Supreme®/Schott® Shearling Bomber - Lime Green"));
// or
wait.Until(ExpectedConditions.TitleContains("Shearling Bomber - Lime Green"));
Это будет ждать до 10 секунд для условия, которое вы дали. Если название изменилось, оно будет продолжено немедленно, в противном случае вы получите TimeoutException
,