1

我有以下 HTML 代码,我需要从中提取电子邮件 ID。

<div class="Serial">
<p> … </p>
<p>
<span>
<a href="mailto:xyz@xyz.com">
    Mr. XYZ
</a>
</span>
</p>
<p> … </p>
<p> … </p>

上述电子邮件 ID 是由一系列随机数生成的。我需要多次迭代它,每次我尝试获取邮件 ID 时,它都会失败。

我正在使用 for 循环迭代 n 次并尝试使用以下代码:

WebElement link = driver.findElement(By.linkText("Mr.XYZ").getAttribute("href");
Assert.assertTrue(link.contains("mailto : ....")

它适用于第一次迭代,但稍后会失败。每次运行代码时如何获取邮件 ID?

4

2 回答 2

3

您只需要以不同的方式考虑它,特别是考虑它在整个文档中的位置。您正在使用.linkText,因此您当前绑定到正在显示的文本。

您可以使用 CSS 选择器更改此设置。

在您的示例中,我们可以假设anchoris onlydiv链接在与 class重叠的那个链接中Serial。这样,你可以有一个这样的 CSS 选择器:

div.Serial > a

意思是,里面有什么并不重要text

你可以走得更远一点,好吧,那里也有其他链接,所以我们将确保我们只获取其中包含mailto:的链接:

div.Serial > a[href^='mailto:']
于 2013-10-19T10:39:19.143 回答
0

我仍然更喜欢@Arran 的回答,但我认为您看到的错误是因为您缺少 1 个微不足道的字符。

By.linkText("Mr.XYZ")

本来应该

By.linkText("Mr. XYZ") // note the space.
于 2013-10-20T16:53:54.817 回答