如何使用selenium从href链接中提取电子邮件ID

时间:2013-10-19 07:55:18

标签: java selenium selenium-webdriver

我有以下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?

2 个答案:

答案 0 :(得分:3)

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

您可以使用CSS选择器更改此内容。

在您的示例中,我们可以假设anchor仅在 链接中覆盖div并且具有类Serial。这样,你可以有一个像这样的CSS选择器:

div.Serial > a

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

你可以再进一步说,好吧,那里还有其他链接,所以我们将确保我们只获得其中包含mailto:的链接:

div.Serial > a[href^='mailto:']

答案 1 :(得分:0)

我仍然更喜欢@Arran的回答,但我认为你看到的错误是因为你错过了一个可怜的角色。

By.linkText("Mr.XYZ")

应该是

By.linkText("Mr. XYZ") // note the space.