我正在抓取一个充满 JS 的页面,我在其中选择了一个 js 按钮
driver.find_element_by_css_selector('.u-textColorDarker').click()
显示一个来自。在该表单内,显示了一些信息,但要获取所有内容,需要单击 n 次按钮(“显示更多”)才能显示所有内容。当没有其他内容可显示时,该按钮会消失。
在这个特定的页面中,按钮需要被点击 3 次。所以我的问题的快速解决方案:
driver.find_element_by_css_selector('.js-showMoreRecommends').click()
time.sleep(2)
driver.find_element_by_css_selector('.js-showMoreRecommends').click()
time.sleep(2)
driver.find_element_by_css_selector('.js-showMoreRecommends').click()
time.sleep(2)
有没有办法将其放入循环中,以便在循环内完成操作,直到选择器“.js-showMoreRecommends”不再存在?
请您参考如下方法:
是的,您可以使用预期的条件。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox()
driver.get("http://somedomain/url")
while not EC.invisibility_of_element_located((By.CSS_SELECTOR, ".js-showMoreRecommends")):
driver.find_element_by_css_selector('.js-showMoreRecommends').click()
我是凭内存写的,但它应该为您指明了大致方向。 其核心是预期条件方法 EC.invisibility_of_element_located。它会给你一个 bool 值来确定它是否已经消失。
