提供されたhtmlに従ってラベルテキストを取得する方法?

Web要素の内部テキストを取得できないことがありました。最近thePersonal保険に取り組んでいて、ラベル(ウェブ要素)の内部テキストを取得できませんでした。検査されたWebページのスクリプトとスクリーンショットは次のとおりです。

WebElement detailPostCode =driver.findElement(By.xpath("//label[@for='q_codePostalDetailAU']"));
System.out.println("postcode label text "+detailPostCode.getText());

私が問題を理解するのを手伝ってください。ご清聴ありがとうございました。

screenshot of the page-inspection view of the webelement

0
スタックオーバーフローへようこそ!使用している言語の質問に必ずタグを追加してください。また、質問の中のコードをコードとしてフォーマットします。書式設定に関するヘルプが必要な場合は、ヘルプトピックを参照してください。
追加された 著者 JeffC,
スタックオーバーフローへようこそ!使用している言語の質問に必ずタグを追加してください。また、質問の中のコードをコードとしてフォーマットします。書式設定に関するヘルプが必要な場合は、ヘルプトピックを参照してください。
追加された 著者 JeffC,
(完全な/関連する)エラーメッセージを追加したり、それが機能しないときに何が起こるかを説明してください。それはあなたのロケータが良いようです...それがあなたが待ち時間を加える必要があるタイミングの問題ではないかと私は思っています。あなたは待ってみましたか?もしそうなら、結果はどうでしたか?
追加された 著者 JeffC,
(完全な/関連する)エラーメッセージを追加したり、それが機能しないときに何が起こるかを説明してください。それはあなたのロケータが良いようです...それがあなたが待ち時間を加える必要があるタイミングの問題ではないかと私は思っています。あなたは待ってみましたか?もしそうなら、結果はどうでしたか?
追加された 著者 JeffC,

4 答え

As per the HTML you have shared the with text as Postal code is a child node of the <div> tag with class attribute as q_codePostal.

What went wrong?

As per your code trial you have used:

WebElement detailPostCode = driver.findElement(By.xpath("//label[@for='q_codePostalDetailAU']"));

In this expression //label[@for='q_codePostalDetailAU'] will always refer to the descending <input> tag with id attribute as q_codePostalDetailAU. Hence your code trial didn't work.

Solution

As an alternative you can use the following solution:

WebElement detailPostCode = driver.findElement(By.cssSelector("div.q_codePostal>label"));
1
追加された

As per the HTML you have shared the with text as Postal code is a child node of the <div> tag with class attribute as q_codePostal.

What went wrong?

As per your code trial you have used:

WebElement detailPostCode = driver.findElement(By.xpath("//label[@for='q_codePostalDetailAU']"));

In this expression //label[@for='q_codePostalDetailAU'] will always refer to the descending <input> tag with id attribute as q_codePostalDetailAU. Hence your code trial didn't work.

Solution

As an alternative you can use the following solution:

WebElement detailPostCode = driver.findElement(By.cssSelector("div.q_codePostal>label"));
1
追加された

あなたはこのXpathを試すことができます:

driver.findElement(By.xpath("//div[@class='q_codePostal']/label"));
0
追加された
"for"は実際にはxpathで使用できる属性ではありません。それがclass、id、css、textの場合は、そのようにしてもかまいません。私はいつも親のdiv(利用可能な場合)を使い、それらのタグから子のタグへナビゲートすることを好む。その方が簡単で見逃しにくく、99%の時間はいつもうまくいく。あなたがそれを好めばまたあなたは私の答えを支持することができます。私の答えが助けてくれたらいいのに。乾杯!
追加された 著者 mbn217,
それはあなたが提案したxpathを使って今動作しています...しかし、私が違いを生むことが何なのかわかりませんでした。その理由を教えてください。
追加された 著者 Techchamp Pgm,

あなたはこのXpathを試すことができます:

driver.findElement(By.xpath("//div[@class='q_codePostal']/label"));
0
追加された
"for"は実際にはxpathで使用できる属性ではありません。それがclass、id、css、textの場合は、そのようにしてもかまいません。私はいつも親のdiv(利用可能な場合)を使い、それらのタグから子のタグへナビゲートすることを好む。その方が簡単で見逃しにくく、99%の時間はいつもうまくいく。あなたがそれを好めばまたあなたは私の答えを支持することができます。私の答えが助けてくれたらいいのに。乾杯!
追加された 著者 mbn217,
それはあなたが提案したxpathを使って今動作しています...しかし、私が違いを生むことが何なのかわかりませんでした。その理由を教えてください。
追加された 著者 Techchamp Pgm,