问题描述
我正在尝试从 .
解决方案
要提取文本 Microsoft Windows,您必须使用 shadowRoot.querySelector()
你可以使用下面的定位器策略:
代码块:
driver.get('https://www.virustotal.com/gui/file/03d1316407796b32c03f17f819cca5bede2b0504ecdb7ba3b845c1ed618ae934/details')print(driver.execute_script("return document.querySelector('file-view').shadowRoot.querySelector('vt-ui-file-details').shadowRoot.querySelector('vt-ui-signature-info').shadowRoot.querySelector('vt-ui-expandable-detail').shadowRoot.querySelector('slot')").text)
控制台输出:
微软视窗
参考文献
您可以在以下位置找到一些相关讨论:
Selenium "selenium.common.exceptions.NoSuchElementException"使用 Chrome 时无法在使用 Selenium 和 Python 的 #shadow-root (open) 中找到登录元素无法在使用 Selenium 和 Python 的 #shadow-root (open) 中找到登录元素python 中的硒:NoSuchElementException: 消息:没有这样的元素:无法定位元素I'm trying to get the content under Signers, Counter Signers and X509 Signers from https://www.virustotal.com/gui/file/03d1316407796b32c03f17f819cca5bede2b0504ecdb7ba3b845c1ed618ae934/details
from selenium import webdriver
op = webdriver.ChromeOptions()
op.add_argument('headless')
driver = webdriver.Chrome(executable_path="/Desktop/chromedriver", options=op)
details_url = "https://www.virustotal.com/gui/file/03d1316407796b32c03f17f819cca5bede2b0504ecdb7ba3b845c1ed618ae934/details"
driver.get(details_url)
element = driver.find_element_by_xpath("/html/body/vt-ui-shell")
print(element.text)
The result doesn't include the parts under Signers, Counter Signers and X509 Signers
I also tried to do
driver.find_element_by_xpath("//*[@id="details"]//div/vt-ui-signature-info//vt-ui-expandable/span")
to locate that part, but it ended up giving me
NoSuchElementException: Message: no such element: Unable to locate element
解决方案
The Signers fields e.g. Microsoft Windows are within nested #shadow-root (open).
Solution
To extract the text Microsoft Windows you have to use shadowRoot.querySelector()
and you can use the following Locator Strategy:
Code Block:
driver.get('https://www.virustotal.com/gui/file/03d1316407796b32c03f17f819cca5bede2b0504ecdb7ba3b845c1ed618ae934/details')
print(driver.execute_script("return document.querySelector('file-view').shadowRoot.querySelector('vt-ui-file-details').shadowRoot.querySelector('vt-ui-signature-info').shadowRoot.querySelector('vt-ui-expandable-detail').shadowRoot.querySelector('slot')").text)
Console Output:
Microsoft Windows
References
You can find a couple of relevant discussions in:
Selenium "selenium.common.exceptions.NoSuchElementException" when using Chrome Unable to locate the Sign In element within #shadow-root (open) using Selenium and Python Unable to locate the Sign In element within #shadow-root (open) using Selenium and Python selenium in python : NoSuchElementException: Message: no such element: Unable to locate element