我有以下典型的影子dom html代码:
<input is="text-input" class="input-element style-scope paper-input"
autocomplete="off" placeholder="" autocapitalize="none" autocorrect="off"
aria-describedby="" aria-labelledby="paper-input-label-22" id="input-22"
tabindex="0">
#shadow-root (user-agent)
<div id="inner-editor">test</div>
</input>
我正在使用Selenium尝试将文本放在阴影根目录中,但它总是返回null,我知道打开阴影DOM和关闭阴影DOM之间的差异,并且阴影dom的打开版本始终显示为#shadow-我的开发工具中的root(open),所以我想知道如何判断这个用户代理阴影dom是打开还是关闭?
编辑:我正在使用JS,我的代码如下所示:
driver.executeScript("return
arguments[0].shadowRoot",driver.findElement(webdriver.By.css("#input-
22"))).then(function(text) { text.getText()});
文本返回为null。
答案 0 :(得分:3)
根据@FlorentB。建议,
driver.findElement(By.css("#input-22")).getAttribute("value")
将返回用户代理影子根的文本值。
答案 1 :(得分:1)
您可以通过查看根元素的innerHTML
是否为空来查看,请参阅此示例
import selenium
from selenium import webdriver
driver = webdriver.Chrome()
from bs4 import BeautifulSoup
def expand_shadow_element(element):
shadow_root = driver.execute_script('return arguments[0].shadowRoot', element)
return shadow_root
driver.get("chrome://settings")
root1 = driver.find_element_by_tag_name('settings-ui')
html_of_interest=driver.execute_script('return arguments[0].innerHTML',root1)
sel_soup=BeautifulSoup(html_of_interest, 'html.parser')
sel_soup# empty root not expande
shadow_root1 = expand_shadow_element(root1)
html_of_interest=driver.execute_script('return arguments[0].innerHTML',shadow_root1)
sel_soup=BeautifulSoup(html_of_interest, 'html.parser')
sel_soup