Python 如何使用selenium按id获取div文本
我正试图从亚马逊上获取一本书的描述文本。我通过使用Python 如何使用selenium按id获取div文本,python,selenium,amazon,getelementbyid,Python,Selenium,Amazon,Getelementbyid,我正试图从亚马逊上获取一本书的描述文本。我通过使用驱动程序获得了这本书的图像、标题和价格。通过\u id查找\u element\u,但是当涉及到div中带有id=“iframeContent”的描述时,它不起作用。有什么想法吗?我也试过WebDriverWait,但运气不好 我使用以下代码: def get_product_description(self, url): """Returns the product description of the A
驱动程序获得了这本书的图像、标题和价格。通过\u id
查找\u element\u,但是当涉及到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\u选择器的元素
最后,您应该使用
driver.switch_to.default_content()
对的信任尝试了这一点,但没有成功。问题是它找不到id iframeContent,更不用说它的文本了。更新了答案,您需要使用switch_to.frame切换到iframe才能继续,否则您将得到NoTouchElement异常