2017-10-30 9 views
0

誰かがこれを処理する方法に関する提案をしてください。 HTMLから要素がSelenium Webdriverを使用して非表示になっている要素で表示されているかどうかを確認するにはどうすればよいですか?

: -

<script type="text/javascript"> 
 
//<![CDATA[ 
 
var RequiredFieldValidator1 = document.all ? document.all["RequiredFieldValidator1"] : document.getElementById("RequiredFieldValidator1"); 
 
RequiredFieldValidator1.controltovalidate = "ddlAlligator"; 
 
RequiredFieldValidator1.focusOnError = "t"; 
 
RequiredFieldValidator1.evaluationfunction = "RequiredFieldValidatorEvaluateIsValid"; 
 
RequiredFieldValidator1.initialvalue = ""; 
 
var ValidationSummary1 = document.all ? document.all["ValidationSummary1"] : document.getElementById("ValidationSummary1"); 
 
ValidationSummary1.headertext = "The form is missing required information. Please review your answers."; 
 
//]]> 
 
</script>

私のC#コード:

private By NoFieldHeader = By.XPath("//label/div[text()='The form is missing required']"); 

    public bool IsNoField() 
    { 
     WebDriverWait wait = new WebDriverWait(_driver, TimeSpan.FromSeconds(3.00)); 
     wait.Until(ExpectedConditions.ElementIsVisible(NoFieldHeader)); 
     return true; 
    } 

エラー: -

An exception of type 'OpenQA.Selenium.WebDriverTimeoutException' occurred in WebDriver.Support.dll but was not handled in user code Additional information: Timed out after 3 seconds

ありがとう!

答えて

0

問題はXPathがtext()=...であることです。つまり、提供された文字列は、投稿されたHTMLからそうでないときにメッセージの全体であることを意味します。あなたは、その要素が存在しないであろうと、あなたはWebDriverTimeoutExceptionをキャッチし、try-catchを追加する必要があり、その場合にはfalseを返します。時間がある場合は、"The form is missing required information. Please review your answers."

をを使用するか、または完全な文字列であることをtext()=...を変更するか必要があります。

+0

ありがとうございます!あなたは正しいです。それが私の問題を解決しました。感謝します! – Geezus

0

あなたのコードは書いたとおりに動作します。あなたは、問題の要素がロードされ、タイムアウトがない限り、3秒待つように指示しました。要素を格納するための待ち時間を増やすか、try another conditionにしてください。

関連する問題