Selenium driver.Title 返回不同的值 C#
Selenium driver.Title returning different values C#
在我的程序中,我 driver 单击进入页面并获取其标题并将其放入字符串中。在调试中,我看到 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
这可能是计时问题,这就是为什么您在较慢的调试中看到正确的值但在 运行 脚本时却看不到的原因。您可以使用 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
。
在我的程序中,我 driver 单击进入页面并获取其标题并将其放入字符串中。在调试中,我看到 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
这可能是计时问题,这就是为什么您在较慢的调试中看到正确的值但在 运行 脚本时却看不到的原因。您可以使用 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
。