如何使用 selenium 通过 id 获取 div 文本
How to get div text by id with selenium
我正在尝试从亚马逊 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
您需要使用 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()
由于该元素在 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
我正在尝试从亚马逊 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
您需要使用 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()
由于该元素在 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