Проверьте, не истекло ли время действияPython

Программы на Python
Ответить
Anonymous
 Проверьте, не истекло ли время действия

Сообщение Anonymous »


Изображение
Мэйби, это может тебе помочь? Как видите, в 21:00 доступны только Padel Buiten 2 и Padel Buiten 3, красные блоки забронированы.
21:00
21:00
21:00 Gereserveerd


Это резервирование корта для игры в падель.
Когда вы выбираете серый цвет, например «Padel Buiten 1, в 18:00», он продолжим код:
# Selecteer baan 1, tijdstip 21:00 uur
element = driver.find_element(By.CSS_SELECTOR, "tr:nth-child(13) > .r-4430 > .slot-period")
element.click()
time.sleep(1)

# Ga naar het nieuwe pop-up scherm, waar gegevens ingevuld kunnen worden
for window_handle in driver.window_handles:
if window_handle != original_window:
driver.switch_to.window(window_handle)
break

# Selecteer 22:00 uur als eindtijd
driver.find_element(By.NAME, "end_time").click()
dropdown = driver.find_element(By.NAME, "end_time")
dropdown.find_element(By.XPATH, "//option[. = '19:00']").click()
driver.find_element(By.NAME, "end_time").click()

Но обычно я начинаю проверять «Padel Buiten 3», этот корт красный и поэтому больше не доступен для бронирования, но код продолжает работать так же, как указано выше, затем он выдает ошибку выполнение этого шага:
driver.find_element(By.NAME, "end_time").click()

Итак, я хотел бы проверить, можете ли вы выполнить, например, этот шаг в течение 3 секунд после выбора временного интервала:
driver.find_element(By.NAME, "end_time").click()

если он кликабельен, то есть это верно в течение 3 секунд, то ему придется продолжить работу с кодом, но если он не выполнит шаг в течение 3 секунд, тогда ему придется выбрать другой суд.
Другие суды, которые следует проверить:
element = driver.find_element(By.CSS_SELECTOR, "tr:nth-child(13) > .r-4435 > .slot-period")

element = driver.find_element(By.CSS_SELECTOR, "tr:nth-child(13) > .r-4437 > .slot-period")

element = driver.find_element(By.CSS_SELECTOR, "tr:nth-child(13) > .r-4617 > .slot-period")

element = driver.find_element(By.CSS_SELECTOR, "tr:nth-child(13) > .r-4618 > .slot-period")

Если ни один из этих кортов недоступен, сценарий может остановиться.
Поэтому ему приходится проверять каждый корт, когда, например, доступен корт 4. , он должен продолжить бронирование корта 4 во всплывающем окне. Если корт 5 доступен, ему необходимо сделать резервирование для корта 5.
В конце 1 хотел бы иметь 1 бронирование на 1 из доступных корты.
Если не все корты доступны, программа/скрипт может остановиться.
# Initialize the WebDriver
driver = webdriver.Chrome()

# Open de website
driver.get("website")

# Tijd om scherm goed te stellen
time.sleep(1)

# START BOEKING 21:00 UUR
# Vul Gebruikersnaam in
driver.find_element(By.NAME, "username").send_keys("USERNAME")

# Vul Wachtwoord in
driver.find_element(By.NAME, "password").send_keys("PASSWORD")

# Klik op Inloggen
driver.find_element(By.CSS_SELECTOR, ".form-submit3 > .button3").click()

# Juiste dag (3x klikken)
for _ in range(1):
element = driver.find_element(By.CSS_SELECTOR, ".matrix-date-nav:nth-child(3)")
element.click()
time.sleep(1)

# Selecteer Padel Buiten uit Dropdown lijst
dropdown_element = driver.find_element(By.ID, "matrix-sport")
dropdown_element.click()
element = dropdown_element.find_element(By.XPATH, "//option[. = 'Padel Buiten']")
element.click()
dropdown_element = driver.find_element(By.ID, "matrix-sport")
dropdown_element.click()
time.sleep(1)

#THE PROBLEM STARTS HERE, BY CHANGING FROM SCREEN
# Bepaal het juiste scherm
original_window = driver.current_window_handle

#SELECT COURT 3
# Selecteer baan 3, tijdstip 18:00 uur
element = driver.find_element(By.CSS_SELECTOR, "tr:nth-child(13) > .r-4436 > .slot-period")
element.click()
baan_boeking = 3
time.sleep(1)

# Ga naar het nieuwe pop-up scherm, waar gegevens ingevuld kunnen worden
for window_handle in driver.window_handles:
if window_handle != original_window:
driver.switch_to.window(window_handle)
break

#SELECT ENDTTIME
# Selecteer 22:00 uur als eindtijd
driver.find_element(By.NAME, "end_time").click() #ERROR AFTER EXECUTING THIS ACTION, BECAUSE HE COULDN'T OPEN element = driver.find_element(By.CSS_SELECTOR, "tr:nth-child(13) > .r-4436 > .slot-period"), AND NO NEW SCREEN OPENED
dropdown = driver.find_element(By.NAME, "end_time")
dropdown.find_element(By.XPATH, "//option[. = '19:00']").click()
driver.find_element(By.NAME, "end_time").click()

# Selecteer speler 1
# Speler 1 is altijd degene die ingelogd is, dus geen actie nodig

# Selecteer speler 2
driver.find_element(By.CSS_SELECTOR, "tr:nth-child(8) .ms-search").click()
driver.find_element(By.CSS_SELECTOR, "tr:nth-child(8) .ms-search").send_keys("PLAYER 1")
time.sleep(1)

# Selecteer speler 3
driver.find_element(By.CSS_SELECTOR, "tr:nth-child(9) .ms-search").click()
driver.find_element(By.CSS_SELECTOR, "tr:nth-child(9) .ms-search").send_keys("PLAYER 2")
time.sleep(1)

#OTHER COURTS WHICH SHOULD BE CHECKED IF THEY ARE AVAILABLE, IF ONE OF THEM IS AVAILABLE HE SHOULD OPEN A SCREEN AND FILL IN ENDTIME
# Selecteer baan 2, tijdstip 21:00 uur
element = driver.find_element(By.CSS_SELECTOR, "tr:nth-child(13) > .r-4435 > .slot-period")
element.click()
baan_boeking = 2
time.sleep(1)

# Selecteer baan 4, tijdstip 21:00 uur
element = driver.find_element(By.CSS_SELECTOR, "tr:nth-child(13) > .r-4437 > .slot-period")
element.click()
baan_boeking = 4
time.sleep(1)

# Selecteer baan 6, tijdstip 21:00 uur
element = driver.find_element(By.CSS_SELECTOR, "tr:nth-child(13) > .r-4617 > .slot-period")
element.click()
baan_boeking = 6
time.sleep(1)

# Selecteer baan 7, tijdstip 21:00 uur
element = driver.find_element(By.CSS_SELECTOR, "tr:nth-child(13) > .r-4618 > .slot-period")
element.click()
baan_boeking = 7
time.sleep(1)


Подробнее здесь: https://stackoverflow.com/questions/792 ... ut-of-time
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»