0

在我的程序中,驅動程序單擊進入一個頁面並獲取其標題並將其放入一個字符串中。在調試中,我看到driver.Title是新頁面的標題,但是該字符串包含前一頁的標題。我怎樣才能解決這個問題,並使第二頁標題分配給字符串?Selenium driver.Title返回不同​​的值C#

//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 
+0

您需要等待頁面加載或使用@Guy建議的標題進行有條件等待。 – lauda

+0

根本問題是您正在單擊元素。如果你這樣做,Selenium將立即執行下一行代碼,此時下一頁尚未加載,你會得到奇怪的結果。如果你可以點擊一個元素,那麼Selenium會默認等待,直到完成加載頁面,然後再執行下一行代碼。 –

回答

0

這可能是時機的問題,這就是爲什麼你在較慢的調試看到正確的值,但不是當你運行該腳本。您可以使用顯式的等待與ExpectedConditionsTitleIsTitleContains等待正確的標題

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

+0

我已經在我的程序中應用titleContains塊,但現在它顯示我的字符串包含null,並且看起來沒有在等待 – Chase

+0

driver.Title是調試中的正確值以及 – Chase

+0

沒關係我在重新啓動vs之後得到了它的工作,謝謝! – Chase