如何解决如何使用硒通过 id 获取 div 文本
我正在尝试从亚马逊 webpage 获取一本书的描述文本。我通过使用 driver.find_element_by_id
可以很好地获得这本书的图像、标题和价格,但是当涉及 div
和 id="iframeContent"
中的描述时,它不起作用。任何的想法?我也试过 WebDriverWait
但没有成功。
我使用以下代码:
def get_product_description(self,url):
"""Returns the product description of the Amazon URL."""
self.driver.get(url)
try:
product_desc = self.driver.find_element_by_id("iframeContent")
except:
pass
if product_desc is None:
product_desc = "Not available"
return product_desc
解决方法
由于该元素位于 iframe
内,您必须切换到该 iframe
才能访问 iframe
内的元素。
所以首先你必须找到 iframe
iframe = driver.find_element_by_id("bookDesc_iframe")
然后用
切换到它driver.switch_to.frame(iframe)
现在您可以访问由 div#iframeContent
css_selector
最后,您应该使用
iframe
转到默认内容
driver.switch_to.default_content()
感谢 author
,您需要使用 selenium 中的文本方法。
try:
product_desc = self.driver.find_element_by_id("iframeContent").text
print(product_desc)
except:
pass
更新 1:
有一个iframe,需要先把webdriver的焦点改成iframe
iframe = self.driver.find_element_by_id("bookDesc_iframe")
self.driver.switch_to.frame(iframe)
product_desc = self.driver.find_element_by_id("iframeContent").text
print(product_desc)
现在您可以访问 bookDesc_iframe iframe 内的每个元素,但是在此框架外的元素您需要先将 webdriver 焦点设置为默认值,如下所示:
self.driver.switch_to.default_content()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。