Тема: Пошук елемента в iframe на веб-сторінці, py + undetected_chromedriver
Я хочу написати метод, який допоможе мені знайти елемент на веб-сторінці, яка містить кілька iframe. Зараз мені доводиться вручну шукати крізь ці iframe кожного разу, коли мені потрібно знайти певний елемент. Я хочу автоматизувати цей процес так, щоб мені потрібно було знати лише назву шуканого елемента.
Я написав метод, щоб досягти цієї мети
def find_elem(self, xpath):
try:
sleep(2)
# Try to find the element using the given XPath
element = self.driver.find_element(By.XPATH, xpath)
return element
except (NoSuchElementException, InvalidSelectorException) as e:
# If the element is not found, search for it recursively in all iframes on the page
element = None
sleep(2)
iframes = self.driver.find_element(By.XPATH, "//iframe")
for iframe in iframes:
try:
self.driver.switch_to.frame(iframe)
element = self.find_elem(xpath)
if element is not None:
break
except NoSuchElementException:
pass
finally:
self.driver.switch_to.default_content()
# If the element is not found after searching all iframes, raise an exception
if element is None:
raise NoSuchElementException("Element not found: " + xpath)
return element
...
self.driver.switch_to.default_content()
found_elem = self.find_elem('//span[@id="gotItButton"]')
found_elem.send_keys(Keys.TAB) # execute some action on the element
але він вилітає з помилкою: pydevd warning getting attribute webelement.screenshot_as_base64 was slow.
Чи може хтось допомогти мені знайти елемент, якщо я не знаю в якому саме фреймі він знаходиться? (Я маю на увазі написання методу за допомогою Python)
P.S. Я також спробував використовувати інструмент DevTools -> Recorder в Google Chrome, але він не працює з фреймами. Виникла помилка при спробі взаємодії з елементом: "waiting for target failed, timeout of 5000ms exceeded".