python - 如何使用 selenium/python 编辑 chrome 搜索和主页?
问题描述
我正在尝试使用 selenium/python 编辑 chrome 浏览器搜索和主页。导航到 chrome://settings/searchEngines 并使用 ID 为“addSearchEngine”定位“添加”按钮后,运行 .click 函数时出现错误。如何正确定位此元素,或者是否有另一种方法可以使用 python 更新 chrome 搜索/起始页?
我猜这个元素被困在一个 iframe 中,但我无法使用开发工具在页面上找到一个,xpath 注意到以下关于绝对 xpath 的内容:“它可能是来自不同 src 的 iframe 的子元素,它是目前不支持。”
from selenium import webdriver
driver = webdriver.Chrome()
driver.set_page_load_timeout(10)
driver.get("chrome://settings/searchEngines")
driver.find_element_by_id("addSearchEngine").click()
Traceback (most recent call last):
File "C:/Users/Jonathan/PycharmProjects/test_project/test_project/Main.py", line 20, in <module>
driver.find_element_by_id("addSearchEngine").click()
File "C:\Python37-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 360, in find_element_by_id
return self.find_element(by=By.ID, value=id_)
File "C:\Python37-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 978, in find_element
'value': value})['value']
File "C:\Python37-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Python37-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="addSearchEngine"]"}
(Session info: chrome=75.0.3770.142)
解决方案
chrome://settings/searchEngines 有 Shadow DOM 元素。您将需要使用 driver.execute_script() 来获取 shadowRoot 元素的句柄并最终到达“addSearchEngine”元素。
示例python:shadowRoot python
示例 Java:对于 chrome://downloads/ shadowRoot java
推荐阅读
- javascript - How expose javascript variable with Rails 6?
- python - How to print the partial text from an element using Selenium and Python
- mongodb - Mongodb use schildscheme in scheme itself
- javascript - 如何使用 RegExp 分隔文本和图像路径?
- ruby - 如何给 Ruby 模块打补丁
- javascript - 请求一种在 React Native 中对齐文本的简单方法
- java - Camel Kafka:无法读取来自 Kafka 主题的消息
- sql - SQL:当在参数中找到“showall”时,我需要返回所有记录,但在找不到时需要从该参数中过滤
- python - AttributeError:“numpy.ndarray”对象没有属性“lower”
- powershell - Set-ExecutionPolicy RemoteSigned 禁用自动完成功能