Я пытаюсь сгенерировать 1000 лучших команд за ночь: https://www.fantasycruncher.com/lineup-rewind/draftkings/NHL/2019-02-03
Однако возможно создать только 500 команд за одну итерацию.Поэтому мне нужно нажать на кнопку Calculate 500 more teams
, но эта кнопка перестает работать, когда браузер генерирует первые 500 команд.Поэтому мне нужно подождать, пока браузер завершит генерацию команд, и кнопка переключится обратно на Calculate 500 more teams
с показанной ожидающей кнопки Stop
.
Я пытался дождаться появления кнопки Calculate
с:
WebDriverWait(driver, 1000).until(EC.presence_of_element_located((By.CLASS_NAME, "calc-more-teams")))
Или можно нажать:
calulatemorebutton=WebDriverWait(driver, 10000).until(EC.element_to_be_clickable((By.CLASS_NAME, "calc-more-teams")))
Но я всегда получаю сообщение WebDriverExceptionчто кнопка не активна в точке ... Глядя на панель элементов (щелкнув осмотреть), я чувствую, что кнопка Calculate 500 more teams
всегда есть, но при генерации браузера появляется предупреждение Stop
команды, и поэтому я должен действовать по-другому.Я пытаюсь подождать, пока это предупреждение не отобразится, но не удалось.
Здесь код работает, но только с несколькими сгенерированными командами.Код работает, потому что я добавляю немного time.sleep()
.Однако, если вы увеличите количество сгенерированных команд, потребуется webDriverwait
, а код не будет работать ...
from selenium import webdriver
import csv
from selenium.webdriver.support.ui import Select
from datetime import date, timedelta
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
from selenium.webdriver.common.keys import Keys
chromedriver =("C:/Users/Michel/Desktop/python/package/chromedriver_win32/chromedriver.exe")
driver = webdriver.Chrome(chromedriver)
driver.get("https://www.fantasycruncher.com/lineup-rewind/draftkings/NHL/2019-02-03")
time.sleep(10)
closeButton = driver.find_element_by_class_name('close-login-alert')
closeButton.click()
# Generate lineups
Calculate_button = driver.find_element_by_id('calc-team')
select = Select(driver.find_element_by_id('select-objective'))
select.select_by_value("Actual_Pts")
lineups_textbox = driver.find_element_by_id('numOfLineups')
lineups_textbox.send_keys("10")
Calculate_button.click()
time.sleep(10)
closeButton2 = driver.find_element_by_class_name('swal2-confirm')
closeButton2.click()
# Calculate 500 more
more = driver.find_element_by_class_name("run-results")
idid=more.get_attribute("id")
realid=idid+"-slider-input"
moremore=driver.find_element_by_id(realid)
moremore.clear()
moremore.send_keys("5")
time.sleep(10)
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "calc-more-teams")))
calulatemorebutton=driver.find_element_by_class_name("calc-more-teams")
calulatemorebutton.click()
# # download csv
WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.XPATH , '//div[@data-action="downloadPlayerlist"]')))
download_button = driver.find_element_by_class_name(' export-csv-dropdown')
download_button.click()
csv= driver.find_element_by_xpath("//div[@data-optid='export']")
csv.click()
time.sleep(5)
driver.close()
Я ожидаю, что будет сгенерировано 1000 команд, и загрузите файл CSV, соответствующий, но я не могу сгенерировать "500" больше, ожидая, пока браузер сгенерирует первую группу из 500 команд, и поэтому кнопка Stop
переключится на Calulate more
.