Python Selenium:如何在循环中单击查看更多按钮

Python Selenium: How to click on see-more buttons in a loop

提问人:Nader Shehata 提问时间:9/3/2022 最后编辑:undetected SeleniumNader Shehata 更新时间:9/4/2022 访问量:457

问:

我正在尝试废弃具有多个重复 divs 元素的网站 https://www.wlw.de/de/suche?employeeCounts=200%2B_50-199&q=blechbearbeitung&supplierTypes=Dienstleister_Hersteller,每个元素都有一个查看更多按钮来显示 div 中的隐藏数据 我试图通过这段代码在 Python 中使用 Selenium 查找按钮

for i in range(len(company_names)):
    seemore_button = driver.find_elements(By.CLASS_NAME, 'toggle-button')[i]
    seemore_button.click()
    time.sleep(2)

其中 company_names 是每个 div 的名称,我使用它的长度在所有 div 上循环,但它不起作用,当我运行此代码时,chrome 驱动程序充当单击按钮,但当它完成时,我发现并非所有按钮都被单击 起初我以为可能是因为页面加载速度不如代码点击按钮快,所以我添加了 2 秒的睡眠时间和相同的结果,有时按钮被点击,有时没有

python selenium 网页抓取 xpath css 选择器

评论

0赞 HedgeHog 9/3/2022
如果您能提供更多详细信息(HTML/URL/是否总是有一个按钮可以点击,...)来澄清,那就太好了。根据您的信息,无法调查到底出了什么问题。谢谢
0赞 Nader Shehata 9/4/2022
完成后,@HedgeHog,我将网站添加到问题中

答:

-1赞 undetected Selenium 9/4/2022 #1

要单击循环中的所有显示更多链接,您可以使用以下定位器策略之一:

  • 使用CSS_SELECTOR

    driver.get('https://www.wlw.de/de/suche?employeeCounts=200%2B_50-199&q=blechbearbeitung&supplierTypes=Dienstleister_Hersteller')
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a#CybotCookiebotDialogFooterButtonAcceptAll>button"))).click()
    elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "a.toggle-button span")))
    for elem in elements:
        elem.click()
    
  • 使用 XPATH

    driver.get('https://www.wlw.de/de/suche?employeeCounts=200%2B_50-199&q=blechbearbeitung&supplierTypes=Dienstleister_Hersteller')
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@id='CybotCookiebotDialogFooterButtonAcceptAll']/button"))).click()
    elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//a[@class='toggle-button']//span")))
    for elem in elements:
        elem.click()
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

评论

0赞 RF1991 11/26/2022
亲爱的@undetectedSelenium你能看看我的问题吗?您丰富的知识可以更好地解决我的问题