Я пытаюсь получить все значения одного выпадающего поля, а затем зацикливаюсь на этих значениях. Во время цикла я пытаюсь выбрать каждое раскрывающееся значение. Теперь при каждом выборе заполняется другое раскрывающееся поле. Итак, это зависимое раскрывающееся поле.
Пока я могу получить все выпадающие значения и могу циклически перебирать эти значения. Но главная проблема заключается в том, когда я выбираю каждое значение. Когда я выбираю каждое значение, он отправляет запрос на публикацию, обновляет всю страницу и заполняет зависимый выпадающий список значениями.
Теперь я использую этот скрипт на Python ниже
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
#from selenium.webdriver.support.expected_conditions import stalenessOf
import time
driver = webdriver.Firefox()
driver.set_script_timeout(10)
wait = WebDriverWait(driver, 10)
driver.get("https://test.aspx")
district_list = Select(driver.find_element_by_name("DistrictList"))
for district in district_list.options:
wait.until(EC.visibility_of_element_located((By.NAME, 'DistrictList')))
district_name = district.get_attribute("text")
print("District is: %s" % district_name)
district_list.select_by_visible_text(district_name)
wait.until(EC.visibility_of_element_located((By.NAME, 'DistrictList')))
но я получаю эту ошибку
selenium.common.exceptions.StaleElementReferenceException: Message: ссылка на элемент устарела; либо элемент больше не присоединен к DOM, он не находится в текущем контексте фрейма, либо документ обновлен
РЕДАКТИРОВАТЬ: Полный ответ об ошибке:
(base) F:\Projects\GitHub\Capture_Ocr>python selenium_dropdown.py
District is: -- Select District --
District is: Ahmednagar
Traceback (most recent call last):
File "selenium_dropdown.py", line 20, in <module>
district_name = district.get_attribute("text")
File "C:\Users\Kapil\Anaconda3\lib\site-packages\selenium\webdriver\remote\webelement.py", line 141, in get_attribute
self, name)
File "C:\Users\Kapil\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 636, in execute_script
'args': converted_args})['value']
File "C:\Users\Kapil\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Users\Kapil\Anaconda3\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
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
Теперь я просмотрел некоторые ссылки на StackOverflow, например
Python Selenium: подождать, пока элемент больше не устареет?
и другие, но не смогли найти решение.