Я пытаюсь получить все комбинации с этого сайта: https://www.kgm.gov.tr/Sayfalar/KGM/SiteTr/Otoyollar/OtoyolUcretSorgu.aspx
Извините за язык этого сайта Turki sh. Я переведу тексты, которые требуют от вас понимания проблемы. Переводы выпадающего меню:
Отобан = Шоссе
Гироси Гисеси = Начало шоссе
Чикис Гисеси = Конец шоссе
Ара c sinifi = Оценка автомобиля
Ucreti Hesapla = Рассчитать цену, между началом и концом шоссе
Так что в основном я хочу нажать на все варианты соответственно и нажать "Ucreti Hesapla", чтобы увидеть цена и сохранить.
Мой код:
from selenium import webdriver
import time
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.ui import WebDriverWait
url = "https://www.kgm.gov.tr/Sayfalar/KGM/SiteTr/Otoyollar/OtoyolUcretSorgu.aspx"
driver = webdriver.Chrome("C:/Users/atkarakas/chromedriver.exe")
driver.get(url)
highways = Select(driver.find_element_by_xpath('//*[@id="ctl00_ctl58_g_317e7991_4b2e_47d1_b939_7e3f3b7c8256_ctl00_ddlOtoyol"]'))
for highway in highways.options:
highways.select_by_value(highway.get_attribute('value'))
beginnings= Select(driver.find_element_by_xpath('//*[@id="ctl00_ctl58_g_317e7991_4b2e_47d1_b939_7e3f3b7c8256_ctl00_ddlGise1"]'))
for beginning in beginnings.options:
beginnings.select_by_value(beginning.get_attribute('value'))
ends = Select(driver.find_element_by_xpath('//*[@id="ctl00_ctl58_g_317e7991_4b2e_47d1_b939_7e3f3b7c8256_ctl00_ddlGise2"]'))
for end in ends.options:
ends.select_by_value(end.get_attribute('value'))
vehicles = Select(driver.find_element_by_xpath('//*[@id="ctl00_ctl58_g_317e7991_4b2e_47d1_b939_7e3f3b7c8256_ctl00_ddlAracSinifi"]'))
for vehicle in vehicles.options:
vehicles.select_by_value(vehicle.get_attribute('value'))
#The code works fine until here, the main problem begins here
driver.find_element_by_xpath('//*[@id="ctl00_ctl58_g_317e7991_4b2e_47d1_b939_7e3f3b7c8256_ctl00_Sorgula"]').click()
results=driver.find_element_by_xpath('//*[@id="ctl00_ctl58_g_317e7991_4b2e_47d1_b939_7e3f3b7c8256_ctl00_LblResult"]').text
print (results)
driver.close()
Когда я запускаю код, эта ошибка растет: StaleElementReferenceException: stale element reference: element is not attached to the page document
.
Я знаю, что должен использовать time.sleep()
или WebDriverWait()
. Я прочитал эту документацию: https://selenium-python.readthedocs.io/waits.html.
Я пробовал каждую функцию "ожидания", чтобы решить проблему. Но это не работает.
Какой код ожидания следует использовать и куда его поместить, чтобы сохранить текст после click()
? Или есть какой-нибудь другой альтернативный метод, чтобы увидеть результаты?