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

我正在尝试更改 chrome 配置文件名称,例如:chrome://settings/manageProfile使用 Python 和 Selenium :

这是左上角的空文本框:

https://img.mukewang.com/64e4727400015c8106530336.jpg

问题是我无法访问该元素,我尝试了以下所有内容:


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". 然而,该值存储在一个span中,其ID是"profile-name".


我总是遇到同样的问题:“没有这样的元素:无法找到元素”。我对 Selenium 没有深入的了解。我已经在互联网上寻找答案,但一无所获。


慕娘9325324
浏览 1443回答 2
2回答

临摹微笑

要访问输入元素,您需要遍历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")浏览器快照:

阿晨1998

接受的答案有效,我只想添加一些内容:对于那些认为你必须用暗影根源寻找自己的道路的人来说,实际上你不必这样做。以 Chrome 为例(在 Firefox 上不可能),当您定位源代码中的元素时,复制“JS 路径”。然后您只需将路径粘贴到execute_script 函数中即可。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python