2017-12-15 5 views
0

私はセレクションを持っているので、要素が存在するときはいつでも、それをクリックしてください。スクリプトは、句に達する前に失敗しています - セレン - C#

If (driver.FindElement(By.Id("id")).Enabled) 
{ 
    driver.FindElement(By.Id("id")).Click(); 
} 
else 
{ 
    Console.WriteLine("Logout button was not visible!"); 
} 

要素が存在せず、If文に達する前にテストが失敗しています。 両方とも試しました.Displayed/.Enabled

+0

あなたのページを遅くしてロードを完了しようとしましたか。 – lloyd

答えて

0

はたぶんログアウト要素は、あなたがそれをクリックしようとした前に、あなたは要素がクリック可能になるまで待機するWebDriverWaitを使用することができますロードされませんでした。その後

using OpenQA.Selenium.Support.UI; 

を提出あなたの.csファイルの先頭に次の行を追加し、これを試してください:それはタイムアウトあなたをスローした場合

var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); 

try 
{ 
    wait.Until(ExpectedConditions.ElementToBeClickable(By.Id("id"))).Click(); 
} 
catch (WebDriverTimeoutException) 
{ 
    Console.WriteLine("Logout button was not visible!"); 
} 

WebDriverWait wait、タイムアウトを投げる前に、10秒まで待ちますコンソールに書き込むことができます。

+0

try/catchが私の問題を解決しました。 – vlatko606

0

try catchブロックを使用して例外を処理できます。明示的に待機する必要があります。

try 
{ 
driver.FindElement(By.Id("id")).Enabled; 
driver.FindElement(By.Id("id")).Click(); 
} 
catch 
{ 
Console.WriteLine("Logout button was not visible!"); 
} 
関連する問題