Доступ к теневым элементам DOM с селеном - PullRequest
0 голосов
/ 15 апреля 2020

По сути, я хочу получить доступ к кнопке, которая появляется во всплывающем окне предварительного просмотра, который является элементом shadow dom. Я пробовал некоторые решения, которые я нашел в отношении stackoverflow, но они не работали, так же, как текущий код, из которого я пытаюсь создать, а именно:

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC



driver = webdriver.Chrome()

wait = WebDriverWait(driver, 10)



def expand_shadow_root(element):

    shadow_root = driver.execute_script("return arguments[0].shadowRoot", element)

    return shadow_root


root1 = driver.find_element_by_tag_name("print-preview-button-strip")

shadow_root1 = expand_shadow_root(root1)

btn = shadow_root1.find_element_by_xpath("/html/body/print-preview-app//print-preview-sidebar//print- 
preview-button-strip//cr-button[1]")

wait.until((EC.element_to_be_clickable(By.XPATH,"/html/body/print-preview-app//print-preview- 
sidebar//print-preview-button-strip//cr-button[1]")))

btn.click()

Inspect Element print

Ответы [ 2 ]

0 голосов
/ 17 апреля 2020

На случай, если у кого-то возникнет такая же проблема, просто введите «-kiosk-printing» в качестве аргумента, например:

options = webdriver.ChromeOptions()
options.add_argument("-kiosk-printing")
driver = webdriver.Chrome(options=options)

Решил проблему для меня.

0 голосов
/ 15 апреля 2020

попробуйте ниже xpath:

 //cr-button[@class='action-button' and @role='button']
...