如何使用Selenium和Python更改日历中的日期?



我试图改变日期与硒,在日历上,是在这里:https://www.wtatennis.com/rankings/singles

你知道怎么做吗?现在;我的代码非常基本,因为我不知道如何继续:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver import ActionChains
from tqdm import tqdm
import time
options = Options()
options.add_argument("--headless")
browser = webdriver.Chrome(ChromeDriverManager().install(),options=options)
browser.get('https://www.wtatennis.com/rankings/singles')
WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.XPATH,'//*[@data-text="Accept Cookies"]'))).click()
value = "start"
WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.XPATH,'//*[@data-text = "Show More"]'))).click()
while(browser.find_element_by_xpath("(//tr[@class='rankings__row'])[last()]").text != value):
elem = browser.find_element_by_xpath('(//*[contains(text(),"Loading")])[2]')
value = browser.find_element_by_xpath("(//tr[@class='rankings__row'])[last()]").text
browser.execute_script("arguments[0].scrollIntoView()", elem)
WebDriverWait(browser, 10).until(EC.presence_of_all_elements_located((By.XPATH,"//tr[@class='rankings__row']")))
try:
WebDriverWait(browser, 10).until_not(EC.text_to_be_present_in_element((By.XPATH,"(//tr[@class='rankings__row'])[last()]"), value))
except:
None
browser = webdriver.Chrome(options=options)
browser.get('https://www.wtatennis.com/rankings/singles')
browser.maximize_window()
WebDriverWait(browser, 10).until(EC.element_to_be_clickable(
(By.XPATH, '//*[@data-text="Accept Cookies"]'))).click()


WebDriverWait(browser, 10).until(EC.element_to_be_clickable(
(By.XPATH, '//span[contains(text(),"Filter by Date")]/..'))).click()

browser.execute_script("window.scrollBy(0,300)")
WebDriverWait(browser, 10).until(EC.element_to_be_clickable(
(By.XPATH, '(//div[@class="date-picker__month-year"]/span[2])[1]'))).click()

WebDriverWait(browser, 10).until(EC.element_to_be_clickable(
(By.XPATH,  '//span[@class = "date-picker__button-label" and contains(text(),"1990")]'))).click()
WebDriverWait(browser, 10).until(EC.element_to_be_clickable(
(By.XPATH, '(//div[@class="date-picker__month-year"]/span[1])[1]'))).click()

WebDriverWait(browser, 10).until(EC.element_to_be_clickable(
(By.XPATH,  '//span[@class = "date-picker__button-label" and contains(text(), "March")]'))).click()
WebDriverWait(browser, 10).until(EC.element_to_be_clickable(
(By.XPATH,  '(//span[@class = "date-picker__cell-data" and contains(text(), "12")]/..)[1]'))).click()

input()

你必须使用日期选择器,更改日期月和年,因为你想

@PDHide非常感谢您的出色解决方案。我拿了你的代码,玩了一点(请给我你的笔记,因为我正在寻求学习python技能)

from selenium import webdriver
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import datetime
# Date Format >> dd/mm/yyyy
thedate='11/04/2016'
def myClick(by, desc):
wait = WebDriverWait(driver, 10)
by = by.upper()
if by == 'XPATH':
wait.until(EC.element_to_be_clickable((By.XPATH, desc))).click()
if by == 'ID':
wait.until(EC.element_to_be_clickable((By.ID, desc))).click()
day, month, year = thedate.split('/')     
month_name = datetime.date(int(year), int(month), int(day)) 
month = month_name.strftime("%B")
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get('https://www.wtatennis.com/rankings/singles')
driver.maximize_window()
myClick('xpath', '//*[@data-text="Accept Cookies"]')
myClick('xpath', '//span[contains(text(),"Filter by Date")]/..')
driver.execute_script("window.scrollBy(0,300)")
myClick('xpath', '(//div[@class="date-picker__month-year"]/span[2])[1]')
myClick('xpath', f'//span[@class = "date-picker__button-label" and contains(text(),"{year}")]')
myClick('xpath', '(//div[@class="date-picker__month-year"]/span[1])[1]')
myClick('xpath', f'//span[@class = "date-picker__button-label" and contains(text(), "{month}")]')
myClick('xpath', f'(//span[@class = "date-picker__cell-data" and contains(text(), "{day}")]/..)[1]')

最新更新