2017-09-18 14 views
1

私はSeleniumとC#の新機能で、何かを作成して直ちに削除する自動テストを作成しています。Selenium c# - テキストが表示されなくても動作していないのを確認しました。

私のテストの最後のステップは、削除したアイテムの名前が表示されなくなったことを確認することです。これが問題になっているようです。

モーダルダイアログでアイテムがバックグラウンドで表示されるので、モーダルダイアログで削除を確認したら、次はアイテム名が表示されなくなったことを確認することですが、コードには期待通りの結果ではなく真であるため、例外がスローされます。

私が使用しているコードの下を参照してください:

public bool DeletedCategoryNoLongerVisible(string CategoryDisplayName) { 
    try { 
    WebDriverWait wait = new WebDriverWait(Driver, TimeSpan.FromSeconds(20)); 
    wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//*[@id='10_anchor']"))); 
    Driver.FindElement(By.XPath($ "//*[@class='jstree-anchor'][text()='{CategoryDisplayName}']")); 
    return false; 
    } catch (Exception) { 
    return true; 
    } 
} 
+0

tryi要素やテキストを検証するか?要素が実際に削除されているのですか、それともテキストだけですか? – IamBatman

+0

@IamBatman、テキストが削除されたので、私はそれを確認したいと思っています。私が指定したElementToBeClickableは、モーダルの背後にあるボタンですが、それは助けに見えません。 –

+0

ボタンや入力フィールドのテキストですか?いずれにしても、要素からテキストを取得して条件を実行するのはなぜですか?存在しない場合はこれを実行し、そうでない場合は実行します。 – IamBatman

答えて

0

対象要素が欠落しているか、その表示されたテキストがInvisibilityOfElementWithTextで空になってもであるためにあなたが待つことができます。

new WebDriverWait(Driver, TimeSpan.FromSeconds(20)) 
    .Until(ExpectedConditions.InvisibilityOfElementWithText(By.XPath(...), CategoryDisplayName)); 

とIF要素が上にある別の要素で隠されている場合は、エラーが発生するまでクリックしてください:

new WebDriverWait(Driver, TimeSpan.FromSeconds(20)) 
    .Until((driver) => { 
    try { 
     driver.FindElement(By.XPath(...)).Click(); 
     return false; 
    } catch (WebDriverException) { 
     return true; 
    } 
    }); 
関連する問題