javaを使用してセレンWebドライバーで以下のコードから値を取得するにはどうすればよいですか
<script id="metamorph-0-start" type="text/x-placeholder"/>
test@gmail.com
<script id="metamorph-0-end" type="text/x-placeholder"/>
私は答えたくなるかもしれません:
String email = driver.findElement(By.xpath("id('metamorph-0-start')/..')")).getText();
しかし、それは他のテキスト兄弟/子孫がいない場合にのみ機能します。
私はいくつかのことを想定しています.1つはあなたのhtmlが実際にあるということです:
<script id="metamorph-0-start" type="text/x-placeholder"></script>
test@gmail.com
<script id="metamorph-0-end" type="text/x-placeholder"></script>
本当にメールを取得するには、Javascript を使用してこれを行います。
String email = (String) ((JavascriptExecutor)driver).executeScript(
"return arguments[0].nextSibling.textContent.split('\\n')[1]",
driver.findElement(By.id("metamorph-0-start")));
Javascript の代わりに Java で改行除去を行うこともできます。
ページ (またはそれを含む要素) についての知識がなくても、TunaBum が最良の答えを持っていると思います。
とはいえ、それがページ上の唯一の電子メール アドレス (または at-sign in int を含むテキスト) であるという仮定に基づいて、次のことができます。
String email = driver.findElement(By.xpath("//*[contains(text(),'@')]")).getText();
テキストに を含む要素のテキストを取得@
します。
包含要素に複数の要素があり、それらのすべてにテキストが含まれている場合、まだテキスト ノードを操作できないmetamorph-number-start/end
ため、JS が唯一のパスです。WebDriver