如果您查看网站的 HTML,您可以看到您的输入字段位于所谓的#shadowroot
.
这些 shadowroot 会阻止您使用简单的find_element_by_id
. 您可以通过查找包含您要查找的元素的所有父 shadowroot 来解决此问题。在每个 shadowroot 中,您将需要使用 javascript 的 querySelector 并找到下一个 shadowroot,直到您可以访问您要查找的元素。
在您的情况下,您需要执行以下操作:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
driver =webdriver.Chrome()
driver.get('https://www.virustotal.com/gui/join-us')
print(driver.title)
# wait a bit untill form pops up
time.sleep(3)
# Retrieve the last shadowroot using javascript
javascript = """return document
.querySelector('vt-virustotal-app').shadowRoot
.querySelector('join-us-view').shadowRoot
.querySelector('vt-ui-text-input').shadowRoot"""
shadow_root = driver.execute_script(javascript)
# Find the input box
search = shadow_root.find_element_by_id("input")
search.send_keys("Muhammad Aamir")
search.send_keys(Keys.RETURN)
time.sleep(5)
driver.quit()