1、先定位到 shadow-root 的宿主节点(此处为 id=box 的 div)
2、切换到 shadow-root 中
3、然后再选择 shadow-root 下的 span 标签
import time
from selenium import webdriver
driver = webdriver. Chrome( )
driver. get( url= "http:127.0.0.1:5000/test" )
js = 'document.getElementById("box").shadowRoot.children[0].children[0].innerText=666'
res = driver. execute_script( js)
def expand_shadow_element ( element) :
shadow_root = driver. execute_script( 'return arguments[0].shadowRoot' , element)
return shadow_root
shadow_section = expand_shadow_element( find_element_by_tag_name( "neon-animatable" ) )
shadow_section. find_element_by_css( ".flex" )
import selenium
from selenium import webdriver
driver = webdriver. Chrome( )
def expand_shadow_element ( element) :
shadow_root = driver. execute_script( 'return arguments[0].shadowRoot' , element)
return shadow_root
selenium. __file__
driver. get( "chrome://downloads" )
root1 = driver. find_element_by_tag_name( 'downloads-manager' )
shadow_root1 = expand_shadow_element( root1)
root2 = shadow_root1. find_element_by_css_selector( 'downloads-toolbar' )
shadow_root2 = expand_shadow_element( root2)
root3 = shadow_root2. find_element_by_css_selector( 'cr-search-field' )
shadow_root3 = expand_shadow_element( root3)
search_button = shadow_root3. find_element_by_css_selector( "#search-button" )
search_button. click( )
document. getElementsByClassName( 'el-input__inner' ) [ 2 ] . placeholder = 3
——》3
document. getElementsByClassName( 'el-input__inner' ) [ 2 ] . placeholder = 1
——》1
document. getElementsByClassName( 'el-input__inner' ) [ 2 ] . placeholder
‘1 ’