Драйвер 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,

Другие вопросы по тегам