如何使用selenium webdriver从占位符中获取电子邮件

时间:2012-06-03 02:29:41

标签: selenium webdriver

如何使用java

从selenium webdriver中获取以下代码中的值
<script id="metamorph-0-start" type="text/x-placeholder"/>
test@gmail.com
<script id="metamorph-0-end" type="text/x-placeholder"/>

2 个答案:

答案 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还无法使用文本节点。