1、現象
オブジェクトの要素のいくつかは、例外をスローとしてUIは、自動テストスクリプトの実装では、時々引用さ
org.openqa.selenium.StaleElementReferenceException:古い要素参照:要素がページの文書に添付されていません
図2に示すように、その理由を与えられます
次のように公式の説明が与えられます。
要素が完全に削除されています。
要素は、もはやDOMに添付されていません。
私は理解して:
ページ要素は、現在のページに依存して、もはや、要素に古く、時代遅れの言及である、あなたは再位置決め要素オブジェクトを取得する必要がありません
JavaScriptはページを更新する場合、操作は時に古い要素のリファレンス例外が発生します。
ソリューション:
使用クラスのコンストラクタWebDriverWaitはwebdriverをオブジェクトと(30秒)を待つ最大時間を受け取りました。
それまで上書きがメソッドExpectedConditionインターフェースを適用するメソッドを呼び出し、彼らがロードされた要素であるWebElementを返し、[OK]をクリックします。
デフォルトでは、500ミリ秒ごとExpectedCondition一度呼ばWebDriverWait、成功リターンまで、もちろん、値がセットに全く成功したリターンを超えていない場合は、検索し、サイクル、5回例外がスローされます。
実際には、5回で機能するように、ほとんどの試みが、しかし一般的に、ほとんどの3回で、あり、そして二度と待ちがはるかに優れて直接糸に比べて、与えられています。
パブリックブールisDisplay(最終文字列のXPath、最終的な文字列のテキスト){ ブール結果= 偽。 INT試み= 0 。 一方、(試み<5 ){ 試み{ 試み ++ 。 結果 = 新しい WebDriverWait(ドライバ、30 ) (.until 新しい ExpectedCondition <ブール> (){ パブリックブール適用(webdriverをドライバ){ リターンdriver.findElement(By.xpath(XPathの))のgetText()は(テキスト)が含まれています。。。 } })。 返す 真; } キャッチ(例外e){ e.printStackTrace(); } } 戻り値の結果; }