Задать вопрос
@pavelermolenko

Как зафиксировать изменение страницы с Selenium?

Суть вопроса следующая - пытаюсь написать простого бота для сайта посольства, чтобы при наличии свободных мест приходило сообщение в телеграм. Его сайт - Ссылка удалена модератором.
Парсер выглядит следующим образом:
from selenium import webdriver
from time import sleep
from applicant_info import Pavel
import xpaths
url_site_on = "https://konzinfobooking.mfa.gov.hu/"

browser = webdriver.Firefox()
browser.get(url_site_on)
sleep(7)
browser.execute_script("scroll(0, 1400)")
sleep(1)
browser.find_element(by="xpath", value=xpaths.select_location).click()
sleep(1)
browser.find_element(by="xpath", value=xpaths.embassy).click()
sleep(1)
browser.find_element(by="xpath", value=xpaths.select_type_of_application).click()
sleep(1)
browser.find_element(by="xpath", value=xpaths.visa_application_schengen).click()
sleep(1)
browser.find_element(by="xpath", value=xpaths.save_visa_types).click()
sleep(1)
browser.find_element(by="xpath", value=xpaths.name_field).send_keys(Pavel.name)
browser.find_element(by="xpath", value=xpaths.date_of_birth_field).send_keys(Pavel.date_of_birth)
browser.execute_script("scroll(0, 1400)")
sleep(1)
browser.find_element(by="xpath", value=xpaths.num_of_applicants_field).clear()
browser.find_element(by="xpath", value=xpaths.num_of_applicants_field).send_keys(Pavel.num_of_applicants)
sleep(1)
browser.find_element(by="xpath", value=xpaths.phone_number_field).send_keys(Pavel.phone_number)
browser.find_element(by="xpath", value=xpaths.email_address_field).send_keys(Pavel.email_address)
browser.find_element(by="xpath", value=xpaths.passport_number_field).send_keys(Pavel.passport_number)
sleep(1)
browser.execute_script("scroll(0, 1430)")
sleep(2)
browser.find_element(by="xpath", value=xpaths.checkbox_1).click()
sleep(0.5)
browser.find_element(by="xpath", value=xpaths.checkbox_2).click()
browser.execute_script("scroll(0, 1650)")
sleep(1)
browser.find_element(by="xpath", value=xpaths.select_date).click()
sleep(5)


Xpaths элементов выглядят следующим образом:
select_location = "/html/body/app/div/div/div[4]/div/div/div/div[2]/div[1]/div[1]/div/div[1]/button"
embassy = "/html/body/app/div/div/div[4]/div/div/div/div[2]/div[1]/div[1]/div/div[1]/div/div/div/div[2]/div[74]/input"
select_type_of_application = "/html/body/app/div/div/div[4]/div/div/div/div[2]/div[1]/div[3]/div[1]/div[1]/button"
visa_application_schengen = "/html/body/app/div/div/div[4]/div/div/div/div[2]/div[1]/div[3]/div[1]/div[1]/div/div/div/div[2]/div[36]/input"
save_visa_types = "/html/body/app/div/div/div[4]/div/div/div/div[2]/div[1]/div[3]/div[1]/div[1]/div/div/div/div[3]/button[2]"
name_field = "/html/body/app/div/div/div[4]/div/div/div/div[2]/div[1]/div[5]/div/div[1]/input"
date_of_birth_field = "/html/body/app/div/div/div[4]/div/div/div/div[2]/div[1]/div[6]/div/div[1]/duet-date-picker/div/div[1]/input[1]"
num_of_applicants_field = "/html/body/app/div/div/div[4]/div/div/div/div[2]/div[1]/div[7]/div/input"
phone_number_field = "/html/body/app/div/div/div[4]/div/div/div/div[2]/div[1]/div[8]/div/div[1]/input"
email_address_field = "/html/body/app/div/div/div[4]/div/div/div/div[2]/div[1]/div[9]/div/input"
passport_number_field ="/html/body/app/div/div/div[4]/div/div/div/div[2]/div[1]/div[10]/div/input"
checkbox_1 = "/html/body/app/div/div/div[4]/div/div/div/div[2]/div[1]/div[11]/div[2]/div[1]/input"
checkbox_2 = "/html/body/app/div/div/div[4]/div/div/div/div[2]/div[1]/div[12]/div[2]/div[1]/input"
select_date = "/html/body/app/div/div/div[4]/div/div/div/div[2]/div[1]/div[13]/div[2]/button"


Парсер работает так, как мне нужно, все кнопочки нажимает, все поля заполняет. Когда форма заполнена и нажимается кнопка "Select date", вылезает следующее окошко:
64cb8a56a675a993017044.png

Вопрос следующий: как написать программу, которая будет реагировать на то, что вместо того маленького окошка со скриншота будет некое окно с выбором дат? (как выглядит выбор дат на этом сайте, я не знаю)
  • Вопрос задан
  • 49 просмотров
Подписаться 1 Средний 2 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы