python - 无法在 google chrome 网页上找到元素

标签 python python-3.x selenium selenium-webdriver

我正在尝试更改 chrome 配置文件名称,例如:chrome://settings/manageProfile使用 Python 和 Selenium :
这是左上角的空文本框:
image
问题是我无法访问该元素,我尝试了以下所有内容:

chromeProfilName = browser.find_element(By.XPATH, "//*[@id='profile-name']")

chromeProfilName = browser.find_element(By.ID, "profile-name")

chromeProfilName = browser.find_element(By.ID, "input") 
我不太明白 HTML 页面是如何制作的,但是当我检查页面时,我发现了 textboxID = "input" .但是,该值存储在一个跨度中,其 ID 为 "profile-name".我总是有同样的问题:“没有这样的元素:无法找到元素”。我对 Selenium 没有深入的了解。我已经在互联网上寻找答案,但一无所获。
谢谢 !

最佳答案

访问 输入 您需要遍历的元素 shadowroot元素。使用以下 querySelector识别 输入 标签。

driver.get("chrome://settings/manageProfile")
profileInput = driver.execute_script('return document.querySelector("settings-ui").shadowRoot.querySelector("settings-main").shadowRoot.querySelector("settings-basic-page").shadowRoot.querySelector("settings-people-page").shadowRoot.querySelector("settings-manage-profile").shadowRoot.querySelector("cr-input").shadowRoot.querySelector("#input")')
profileInput.click()
profileInput.clear()
profileInput.send_keys("user676767")
浏览器快照:
enter image description here

关于python - 无法在 google chrome 网页上找到元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63994977/

相关文章:

python-3.x - 使用 Asyncio 的 Run_In_Executor 包装 Selenium 驱动程序(和其他阻塞调用)

java - 单击弹出 Java Selenium Webdriver 的按钮

python - 单元测试实现 Python 属性

python - 如何在 Fabric 文件中设置目标主机

python - "*_"是在 Python 中忽略参数的可接受方式吗?

python - 在 Python 中将单列拆分为多个子列/数组

python - 有没有一种快捷方式可以在功能条件下在 'any' 和 'all' 之间切换?

python - 使用 type() 手动创建新类时,子类 __module__ 设置为元类模块

python - Selenium 属性错误 : list object has no attribute find_element_by_xpath

python - Selenium - 在检查 HTML 之前找不到可见元素?