单击Selenium中容器中的每个div

2024-10-03 13:21:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用selenium来自动访问https://www.nemlig.com/的页面,我不知道如何迭代(比方说)8div,所有这些都包含在另一个div

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

driver = webdriver.Chrome(executable_path = r'C:\Users\user\lib\chromedriver_77.0.3865.40.exe')
wait = WebDriverWait(driver,10)
driver.maximize_window()
driver.get("https://www.nemlig.com/")

wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".timeslot-prompt.initial-animation-done")))
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[type='tel'][class^='pro']"))).send_keys('2300')
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".btn.prompt__button"))).click()

以上是迄今为止的代码。完成此操作后,我希望以给定的时间间隔逐个访问日期按钮

enter image description here

我在实现这一点时遇到了一些问题,因为它们在HTML中看起来都一样。我如何告诉webdriver单击容器中的下一个div,直到所有8个日期都被访问为止


Tags: fromhttpsimportbywwwdriverseleniumelement
1条回答
网友
1楼 · 发布于 2024-10-03 13:21:26

诱导WebDriverWaitpresence_of_all_elements_located()并遵循CSS选择器。我添加了一个日期检查,以检查如果列表中没有日期,则单击该日期

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

driver = webdriver.Chrome(executable_path = r'C:\Users\user\lib\chromedriver_77.0.3865.40.exe')
wait = WebDriverWait(driver,20)
driver.maximize_window()
driver.get("https://www.nemlig.com/")

wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".timeslot-prompt.initial-animation-done")))
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[type='tel'][class^='pro']"))).send_keys('2300')
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".btn.prompt__button"))).click()
dates=[]
elements=wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,"div[data-automation='dayDateTmSlt']")))
for ele in elements:
    if ele.text not in dates:
       dates.append(ele.text)
       driver.execute_script("arguments[0].click();", ele)
       time.sleep(3)

相关问题 更多 >