Skip to main content
 首页 » 编程设计

通过循环内的 CSS 选择器的 Python Selenium 驱动程序

2025年05月04日26txw1958

我正在抓取一个充满 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 值来确定它是否已经消失。