提问人:Nader Shehata 提问时间:9/3/2022 最后编辑:undetected SeleniumNader Shehata 更新时间:9/4/2022 访问量:457
Python Selenium:如何在循环中单击查看更多按钮
Python Selenium: How to click on see-more buttons in a loop
问:
我正在尝试废弃具有多个重复 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 秒的睡眠时间和相同的结果,有时按钮被点击,有时没有
答:
-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你能看看我的问题吗?您丰富的知识可以更好地解决我的问题
下一个:Pandas 列的特征到多个列
评论