Я хочу очистить данные из таблицы HTML для различных комбинаций раскрывающихся значений с помощью циклического перебора этих комбинаций. После выбора комбинации изменения необходимо отправить. Это, однако, вызывает ошибку, поскольку она обновляет страницу.
Это то, что я сделал до сих пор:
from selenium import webdriver
from selenium.webdriver.support.ui import Select
import time
browser.get('https://daten.ktbl.de/feldarbeit/entry.html')
# Selecting the constant values of some of the drop downs:
fertilizer = Select(browser.find_element_by_name("hgId"))
fertilizer.select_by_value("2")
fertilizer = Select(browser.find_element_by_name("gId"))
fertilizer.select_by_value("193")
fertilizer = Select(browser.find_element_by_name("avId"))
fertilizer.select_by_value("383")
fertilizer = Select(browser.find_element_by_name("hofID"))
fertilizer.select_by_value("2")
# Looping over different combinations of plot size and amount of fertilizer:
size = Select(browser.find_element_by_name("flaecheID"))
for size_values in size.options:
size.select_by_value(size_values.get_attribute("value"))
time.sleep(1)
amount= Select(browser.find_element_by_name("mengeID"))
for amount_values in amount.options:
amount.select_by_value(amount_values.get_attribute("value"))
time.sleep(1)
#Refreshing the page after the two variable values are chosen:
button = browser.find_element_by_xpath("//*[@type='submit']")
button.click()
time.sleep(5)
Это приводит к ошибке: selenium.common.exceptions.StaleElementReferenceException: Message: The element reference of <option> is stale; either the element is no longer attached to the DOM, it is not in the current frame context, or the document has been refreshed
. Очевидно, проблема в том, что я действительно обновил документ sh.
Я пробовал это с .submit()
:
button = browser.find_element_by_xpath("//*[@type='submit']")
button.submit()
Это приводит к ошибке: selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: ./ancestor-or-self::form
Время здесь не является проблемой (добавление времени. сон или b.implicit.wait ничего не изменили).
Как я могу обновить страницу, не прерывая редактирование l oop?
, поскольку оно было помечено как дубликат: I Полагайте, что этот вопрос не отвечает на мою проблему, поставленную здесь, по крайней мере, не на моем уровне python навыков, хотя сообщение об ошибке похоже. В другом вопросе проблема была решена путем добавления wait(driver, x)
и ожидаемого условия, если я не ошибаюсь. Здесь, с другой стороны, проблема заключалась в том, что я не вызывал соответствующий раскрывающийся список внутри И вне l oop, как правильно сказал Зараки Кенпачи.