Нажатие кнопки «Отправить» в форме должно привести меня на другую страницу, но я остаюсь на текущей странице — Selenium

#python #selenium-webdriver

Вопрос:

Я пытаюсь создать бота, который автоматически заполнит эту форму автоматически. Я использую selenium с python, и я могу заставить скрипт правильно заполнять поля формы, но когда я нажимаю кнопку поиска, это не приводит меня к следующей странице — кажется, что он просто обновляет текущую страницу. Я попытался заполнить форму с помощью скрипта и нажать кнопку поиска вручную, но получилось то же самое поведение. Я также пробовал использовать .click() и .submit() — без костей. Приношу извинения, если что-то в моем коде неаккуратно, так как это один из моих первых сценариев на python. Спасибо!

 # Tee  time booker
# This script books a tee time at ponemah greens

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import time

site = webdriver.Chrome(ChromeDriverManager().install())

# user inputs
play_date="07/11/2021"
num_players=2


site.get("https://amherstpp.ezlinksgolf.com/index.html#/preSearch")

time.sleep(1)
title = site.title
assert "Amherst CC Prepaid - Online tee times made EZ" in title
dateField=site.find_element_by_xpath('//*[@id="dateInput"]')
dateField.clear()
dateField.send_keys(play_date)

time.sleep(1)
playerField=site.find_element_by_xpath('//*[@id="pc"]')
playerField.send_keys(num_players)

time.sleep(1)
courseSelector=site.find_element_by_xpath('/html/body/div[3]/div[2]/div[2]/ui-view/div/div/div/div[2]/div[2]/form/div/ul/li[4]/div/ul/li[2]/div/div[1]/input')
courseSelector.click()

time.sleep(1)
searchButton=site.find_element_by_xpath('/html/body/div[3]/div[2]/div[2]/ui-view/div/div/div/div[2]/div[2]/form/div/div/div/button')
searchButton.send_keys("n")
print("Button Click")
 

Комментарии:

1. когда я запускаю код, на этой странице отображается callendar, а другие элементы находятся за этим callendar, поэтому их нельзя проверить/использовать — вы должны закрыть callendar перед выбором курса

2. некоторые страницы могут распознавать Селен и блокировать его.

3. Я не вижу в этом ничего плохого (я не верю, что вам нужны звонки time.sleep ). Кажется, что он принимает отправку формы, но затем возвращает новую форму с датой и количеством игроков, заполненных, но без выбранного курса. Но если я добавлю input('pausing...) в конце, а затем после того, как будет возвращена новая форма, если я вручную выберу курс и вручную нажму «Искать все», для меня это будет тройное время (я тоже использую Chrome, но я удалил код, на который ссылается ChromeDriverManager().install() ). (…подробнее)

4. Если я вставляю site.implicitly_wait(5) , за которым следует elem = site.find_element_by_xpath('/html/body/div[3]/div[2]/div[2]/ui-view/div/div[1]/div[2]/nav/div[1]/div[2]/strong') после нажатия кнопки, которая ищет элемент, существующий на странице tee times, это не вызывает исключения тайм-аута. Это означает, что он переходит на страницу tee times, но затем сразу же возвращает пустую форму.

5. @booboo Я также заметил, что он мигает в результатах поиска, но затем отправляет меня обратно на исходную страницу. Как вы думаете, возможно ли, что сайт каким-то образом обнаруживает использование Селена и отправляет меня обратно в исходную форму, как упоминал фурас?