0

如何使用 java 从 selenium webdriver 中的以下代码中获取值

<script id="metamorph-0-start" type="text/x-placeholder"/>
test@gmail.com
<script id="metamorph-0-end" type="text/x-placeholder"/>
4

2 回答 2

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 中进行换行符剥离。

于 2012-06-03T03:41:17.737 回答
0

如果没有更多关于页面(或包含元素)的知识,我认为 TunaBum 有最好的答案。

也就是说,基于这是页面上唯一的电子邮件地址(或者更确切地说是带有 at-sign int 的文本)的假设,您可以这样做

String email = driver.findElement(By.xpath("//*[contains(text(),'@')]")).getText();

获取@在其文本中包含 a 的元素的文本。

如果您的包含元素中有多个metamorph-number-start/end,并且每个都包含一些文本,那么 JS 是您唯一的路径,因为WebDriver还不能使用文本节点。

于 2012-06-03T08:17:03.087 回答