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