1

電子メール ID を抽出する必要がある次の HTML コードがあります。

<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 セレクターを使用して変更できます。

あなたの例では、 がその上にあるクラス内の唯一のリンクであるanchorと想定できます。そうすれば、次のような CSS セレクターを使用できます。divSerial

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 に答える