Message: stale element reference: stale element not found in the current frame
Мне нужно что бы скрипт нажал кнопку войти, но при попытке ее найти по id он выдает ошибку
Message: stale element reference: stale element not found in the current frame
Вот мой код
from get_chrome_driver import GetChromeDriver
from selenium import webdriver
from fake_useragent import UserAgent
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import gg
get_driver = GetChromeDriver()
get_driver.install()
# disable webdriver mode
options = webdriver.ChromeOptions()
options.add_argument('--disable-blink-features=AutomationControlled')
# driver
driver = webdriver.Chrome(options=options)
url = 'https://techreg.gov.kz/index/#'
# Use the installed ChromeDriver with Selenium
try:
driver.get(url=url)
driver.find_element(By.ID, 'details-button').click()
driver.find_element(By.ID, 'proceed-link').click()
time.sleep(5)
driver.implicitly_wait(10)
#ошибка выходит при выполнении данной строчки
driver.find_element(By.ID, 'button_start_work').click()
time.sleep(5)
except Exception as ex:
print(ex)
finally:
driver.close()
driver.quit()
Вот Полный код ошибки
Message: stale element reference: stale element not found in the current frame
(Session info: chrome=123.0.6312.123); For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#stale-element-reference-exception
Stacktrace:
GetHandleVerifier [0x00007FF7364D7032+63090]
(No symbol) [0x00007FF736442C82]
(No symbol) [0x00007FF7362DEC65]
(No symbol) [0x00007FF7362E3D21]
(No symbol) [0x00007FF7362E6159]
(No symbol) [0x00007FF7362E6200]
(No symbol) [0x00007FF736326B1E]
(No symbol) [0x00007FF73631C447]
(No symbol) [0x00007FF736346FDA]
(No symbol) [0x00007FF73631A00A]
(No symbol) [0x00007FF7363471F0]
(No symbol) [0x00007FF736363412]
(No symbol) [0x00007FF736346D83]
(No symbol) [0x00007FF7363183A8]
(No symbol) [0x00007FF736319441]
GetHandleVerifier [0x00007FF7368D25AD+4238317]
GetHandleVerifier [0x00007FF73690F70D+4488525]
GetHandleVerifier [0x00007FF7369079EF+4456495]
GetHandleVerifier [0x00007FF7365B0576+953270]
(No symbol) [0x00007FF73644E54F]
(No symbol) [0x00007FF736449224]
(No symbol) [0x00007FF73644935B]
(No symbol) [0x00007FF736439B94]
BaseThreadInitThunk [0x00007FFEE2E77344+20]
RtlUserThreadStart [0x00007FFEE3BA26B1+33]
Process finished with exit code 0
В данный момент я пробовал найти ее через class, css_selector, id но ошибка одна и та же "Элемент не может быть найден именно в тот момент, когда вы пытались его найти" Понимаю что с первого взгляда кажется что ошибка из-за версии браузера и его драйвера, но на других сайтах все работает. Chrome 123.0.6312.123 | Chromedriver 123.0.6312.122 Вот Кнопка что я пытаюсь найти
<button data-cy="button_start_work" title="" id="button_start_work" class=" uk-button margined uk-button-default techreg_green_btn fonts" style="color: rgb(34, 34, 34); z-index: 0; box-sizing: border-box; direction: ltr; display: flex; align-items: center; justify-content: center;">Войти</button>
Ответы (1 шт):
Попробуйте вместо
driver.find_element(By.ID, 'button_start_work').click()
написать нечто вроде
# Говорим ожидающему объекту, что ждём готовности кнопки
element = WebDriverWait(browser, 10)
btn = browser.find_element(By.ID, 'btn')
element.until(EC.element_to_be_clickable(btn)).click() # По готовности выполняем клик