Selenium Shadow-Root/PDF-Viewer с доступом к кнопке загрузкиPython

Программы на Python
Ответить
Anonymous
 Selenium Shadow-Root/PDF-Viewer с доступом к кнопке загрузки

Сообщение Anonymous »


Я предоставил ссылку на изображение для справки, которая, надеюсь, прояснит все вопросы, касающиеся моей проблемы.

https://drive.google.com/file/d/1tc_0pn ... sp=sharing

Кажется, я не могу найти способ получить доступ к DOM теневого корня, чтобы иметь возможность нажать кнопку загрузки.

Я пытаюсь загрузить PDF-файл, чтобы проверить правильность его заполнения на основе предоставленных ответов.

Я использую Python Selenium

Просмотр PDF – это модальное окно со встроенным DOM с теневым корнем и кнопкой загрузки. Как только я получу доступ к теневому корню, я буду знать, как загрузить файл.

Будем благодарны за любую помощь!

Я уже пытался использовать API для получения закодированного ответа, затем декодировал его и создал PDF-файл, однако я не форматирую его так, как это делает программа просмотра, имея возможность проверить информация слишком сложна. Я вручную загрузил PDF-файл и уже прошел проверочные тесты, поэтому осталось только загрузить файл сейчас.

Мой текущий тестовый код:

login_page.click_login() main_page.click_application_tab() main_page.enter_search(context.caseId) application_page.click_action_button() application_page.click_view_pdf() # Это та часть, где я застрял - возможность получить доступ к теневому DOM и нажать кнопку загрузки context.driver.quit() Вот код, который я попробовал:

# download_pdf_button = self.driver.find_element(By.XPATH, '//*[@id="viewer"]').getShadowRoot()\ # .find_element(By.CSS_SELECTOR, 'viewer-toolbar#toolbar').getShadowRoot()\ # .find_element(By.CSS_SELECTOR, 'view-download-controls#downloads')\ # .find_element(По.ID, 'загрузить') -------------------------------------------------- ----------------------- #shadow_host = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '[id="viewer"]'))) # Shadow_root = Shadow_host.shadow_root # download_pdf_button = wait.until(лямбда-драйвер:shadow_root.find_element(By.CSS_SELECTOR, '[id="download"]')) # download_pdf_button.click() -------------------------------------------------- ----------------------- #shadow_root = self.driver.find_element(By.CSS_SELECTOR, '[id="viewer"]').shadow_root #viewer_toolbar =shadow_root.find_element(By.CSS_SELECTOR, 'viewer-toolbar#toolbar').shadow_root # view_download_controls =view_toolbar.find_element(By.CSS_SELECTOR, 'view-download-controls#downloads') # download_pdf_button = view_download_controls.find_element(By.CSS_SELECTOR, '[id="download"]') # download_pdf_button.click() -------------------------------------------------- ----------------------- # self.driver.execute_script(""" # constshadowHost = document.querySelector('#viewer'); # constshadowRoot =shadowHost.shadowRoot; # const downloadButton =shadowRoot.querySelector('#download'); # downloadButton.click(); # """) Я также проверил наличие нескольких дескрипторов окон и не обнаружил никаких других окон, кроме основного.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»