目標:找個約會
代碼:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import numpy as np
options = Options()
options.add_argument("--start-maximized")
import time
start = time.process_time()
time.sleep(3)
s = Service(path)
driver = webdriver.Chrome(options=options, service=s)
page = 'https://service.berlin.de/terminvereinbarung/termin/tag.php?\
termin=1&dienstleister=122231&anliegen[]=326798&herkunft=1'
driver.get(page)
time.sleep(5)
driver.refresh()
雖然代碼有效,但我想通過使其每隔 5 秒自動重繪 一次來擴展它,直到 2022 年 9 月 9 日的元素可點擊。
我在想類似的東西
if wait.until(EC.element_to_be_clickable((By.XPATH,
'//*[@id="layout-grid__area--maincontent"] \
/div/div/div[2]/div[2]/div/div/div[5]/div/div[2] \
/div[1]/table/tbody/tr[2]/td[5]'))).click() is False:
time.sleep(5)
driver.refresh()
else:
break
但代碼的第二部分不起作用。
可點擊日期的一個示例是 11 月 4 日。
更新:添加了一個 while True 回圈
i=0
while (True):
element = driver.find_element(by=By.XPATH, value='//*[@id="layout-grid__area--maincontent"]\
/div/div/div[2]/div[2]/div/div/div[5]/div/div[2]\
/div[1]/table/tbody/tr[2]/td[5]')
i =1
if "nichtbuchbar" in element.get_attribute("class"):
time.sleep(5)
driver.refresh()
print(f'The {i}\'th try has failed')
我不確定上面的代碼是否正確地完成了這項作業,因為似乎每個新行都在不到 1 秒的時間內列印出來,而重繪 前應該暫停 5 秒。
uj5u.com熱心網友回復:
您可以改為檢查該元素上的類名,這將為您提供與是否存在這樣的功能相同的資訊is_clickable
(假設紅色的不可點擊而白色的可點擊。如果您需要藍色的,請查看 css那個類,看看它是否在類名中)。
if "buchbar" not in element.get_attribute("class"):
time.sleep(5)
driver.refresh()
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/506713.html
上一篇:selenium.common.exceptions.ElementClickInterceptedException:訊息:元素點擊被攔截:元素<arel="next"hr
下一篇:如何下載影像