2017-09-07 2 views
0

li(second)要素のテキストを次のように取得します。コードは要素を見つけることができますが、gettextをフェッチしている間にエラーをスローしています。助けてください。要素のテキストを取得中に古い要素エラーが発生しました

WebElement element = driver.findElement(By.xpath("//div[contains(@id,'location_group')]/div/ul/li[2]")); 

element.getText(); 

エラー

古い要素の参照:要素は、ページの文書に添付されていない

HTML

<div id=location_group> 
    <div> 
    <ul class="og-tooltip js-og-tooltip" style="display: none; opacity: 100;"> 
     <li class="title_text">Organization Group</li> 
     <li class="value_text" style="background: rgb(204, 136, 136); border: 2px solid red;">Global/Aricent/gemsecure </li> 
     <li>&nbsp;</li> 
     <li class="title_text">Group ID</li> 
     <li class="value_text">gemsecure</li> 
    </ul> 
    </div> 
</div> 
+0

見えるようにする要素まで待って、あなたは[古い要素のリファレンス例外]をチェックしている(http://docs.seleniumhq.org/exceptions /stale_element_reference.jsp)? また、どの言語とブラウザを使用していますか? –

+0

[StableElementReference Exception in PageFactory](https://stackoverflow.com/questions/44838538/staleelementreference-exception-in-pagefactory)の可能な複製 – DebanjanB

答えて

-1

この要素を持っているULに包まれているので表示:なしセレンはそれと対話することはできません。

element.getAttribute("innerHTML"); 

か、JavascriptExecutor使用することができます: オプションを試して

JavascriptExecutor executor = (JavascriptExecutor)driver; 
String text= executor.executeScript("document.document.getElementsByClassName('value_text')[0].innerHTML"); 

別のオプションは、あなたが持っているかもしれませgetElementsByClassName

+0

要素が表示されていない場合は、古い要素の例外がスローされませんでした。これで問題は解決されません。また、そのクラス名を持つ複数の要素があります(おそらくページ上の他の要素もあります)。 – JeffC

-1

よりも広いサポートしていますquerySelector/querySelectorAllを使用することです親要素が表示されるのを待ってから対話する

WebElement elementUL = driver.findElement(By.xpath("//div[contains(@id,'location_group')]/div/ul")); 
WebDriverWait wait=new WebDriverWait(driver, 60); 
wait.until(ExpectedConditions.visibilityOf(elementUL)); 

WebElement element = driver.findElement(By.xpath("//div[contains(@id,'location_group')]/div/ul/li[2]")); 

element.getText(); 
+0

要素が表示されていない場合、要素が古くなっても例外がスローされませんでした。これで問題は解決されません。 – JeffC

+0

要素が読み込まれ、親要素が非表示になっています。それが私が待っている理由です。私は、要素が見えない場合、失効したエラーをスローします。 – Murthi

+0

OPによると、現在、無効な要素の例外がスローされています。あなたの答えは、要素が見えるのを待つことです。だから、要素が目に見えるようになるのを待って、古い要素の例外を解決する方法はありますか? – JeffC

-1

場所の明示的な待機WebDriverWait

WebElement ele = driver.findElement(By.xpath("Your locator ")); 
WebDriverWait wait=new WebDriverWait(driver, 25); 
wait.until(ExpectedConditions.visibilityOf(ele)); 

、その後getText()

+0

要素が表示されていない場合は、古い要素の例外がスローされませんでした。これで問題は解決されません。 – JeffC

+1

それから解決策を教えてください。解決したら解決してください。 – iamsankalp89