0

私のプログラムでは、ドライバをページに挿入してタイトルを取得し、それを文字列にします。デバッグでは、driver.Titleは新しいページのタイトルですが、文字列には前のページのタイトルが含まれています。これを修正して、タイトルの付いた2番目のページを文字列に割り当てることができますか?セレンドライバ。異なる値を返す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

それは問題のタイミングかもしれないスクリプトを実行するときに遅くデバッグに正しい値を参照してくださいではなく、なぜ、それがあります。あなたは、これはあなたが与えた条件のために10秒まで待ちます正しいタイトル

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")); 

を待つExpectedConditionsTitleIsまたはTitleContainsで明示的な待機を使用することができます。タイトルが変更されている場合はすぐに続行し、そうでなければTimeoutExceptionを取得します。

+0

私のプログラムでtitleContainsブロックを適用しましたが、 nullを含んでいて、まったく待っているとは思われません – Chase

+0

driver.Titleはデバッグの正しい値です – Chase

+0

私はそれをvsを再起動した後に動作させました、ありがとう! – Chase

関連する問題