簡體   English   中英

通過XPath [Selenium]從Span元素提取文本

[英]Extract Text from Span Element via XPath [Selenium]

我有以下HTML:

<div class="a-row a-spacing-small a-size-small">
<div class="a-row">
<a class="a-link-normal a-declarative g-visible-js reviewStarsPopoverLink" href="#" data-action="a-popover" data-a-popover="{"closeButton":"false","url":"/gp/customer-reviews/widgets/average-customer-review/popover/ref=wl_it_o_cm_cr_acr_img_hz?ie=UTF8&a=B05555JQP&contextId=wishi&link=1&seeall=1","name":"review-hist-pop.B075555RJQP","max-width":"700","position":"triggerBottom","data":{"itemId":"I2555555554GT","isGridViewInnerPopover":""},"header":"","cache":"true"}">
<i id="review_stars_I2J55555554GT" class="a-icon a-icon-star a-star-4-5">
<span class="a-icon-alt">4.5 out of 5 stars</span>
</i>
<i class="a-icon a-icon-popover"/>
</a>
<a class="a-link-normal g-visible-no-js" href="/product-reviews/B075555JQP/ref=wl_it_o_cm_cr_acr_txt_hz?ie=UTF8&colid=2K4U5555551D&coliid=I2J5555555T&showViewpoints=1">
<span class="a-letter-space"/>
<a id="review_count_I2J55555555GT" class="a-link-normal" href="/product-reviews/B05555555P/ref=wl_it_o_cm_cr_acr_txt_hz?ie=UTF8&colid=255555555D&coliid=I2555555GT&showViewpoints=1">(68)</a>
</div>
<div class="a-row">
<div class="a-row a-size-small itemAvailability">
<div class="a-row itemUsedAndNew">
</div>

我試圖通過以下XPath之一提取4.5 out of 5 stars值:

.//*[contains(@id,'review_stars')]/span[@class='a-icon-alt']
.//*[contains(@id,'review_stars')]

但是,到目前為止,我嘗試過的所有操作都失敗了(返回空字符串)

有趣的是,所有這些XPath實際上都可以在Firebug所以我不確定為什么它不能在我的程序中運行(我懷疑這與評級實際上在瀏覽器中不可見有關,除非您將鼠標懸停在特定元素上,但不確定是否/為什么/如何導致上述問題以及如何解決)

謝謝!

您未能將圖像包括在錨點和跨度之間。 跨度在圖像內部,而不是錨的同級。

嘗試:

.//*[contains(@id,'review_stars')]/i/span[@class='a-icon-alt']

要通過XPath提取4.5 out of 5 stars4.5 out of 5 stars可以使用:

//a[@class='a-link-normal a-declarative g-visible-js reviewStarsPopoverLink']/i[starts-with(@id,'review_stars_') and @class='a-icon a-icon-star a-star-4-5']/span[@class='a-icon-alt']

更新:

如您所述, This does not work either. I just tried it. This does not work either. I just tried it. 您一定錯過了我提供的xpath的一部分。 我的答案是一個可靠的答案。 請參閱下面的快照:

XPath_snapshot

注意 :盡管您的問題與xpath有關,但是您已經針對getText()方法和getAttribute(“ innerHTML”)方法提取了答案。 我的答案將如何同時與getText()getAttribute(“ innerHTML”)方法一起使用。

盡管我不完全理解為什么以前的代碼不起作用,但我將嘗試回答自己的問題。 如果有人可以為我提供深入的解釋,我將接受他們的答案作為最終答案。

現在這對我有效:

而不是調用element.getText(); 調用element.getAttribute("innerHTML");

這將返回正確的結果,但是我想了解為什么getText()在這種情況下不起作用。 同樣,如果有人可以提供一個可以正常工作的XPath或可以對所有這些提供解釋,我將接受它作為最終答案。

謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM