如何使用java
从selenium webdriver中获取以下代码中的值<script id="metamorph-0-start" type="text/x-placeholder"/>
test@gmail.com
<script id="metamorph-0-end" type="text/x-placeholder"/>
答案 0 :(得分:1)
我可能很想回答:
String email = driver.findElement(By.xpath("id('metamorph-0-start')/..')")).getText();
但是只有在没有其他文本兄弟/后代的情况下才会有效。
我将假设一些事情,一个是你的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")));
您也可以使用Java而不是Javascript进行换行。
答案 1 :(得分:0)
如果不了解页面(或包含元素),我认为TunaBum有最好的答案。
那就是说,基于这个假设,那就是页面上唯一的电子邮件地址(或者更确切地说是带有at符号的文本),你可以做到
String email = driver.findElement(By.xpath("//*[contains(text(),'@')]")).getText();
获取文本中包含@
的元素的文本。
如果你的包含元素中有多个metamorph-number-start/end
,并且每个元素都包含一些文本,那么JS是你唯一的路径,因为WebDriver
还无法使用文本节点。