首页 > 解决方案 > 如何使用 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)

标签: pythonwindowsseleniumgoogle-chrome

解决方案


chrome://settings/searchEngines 有 Shadow DOM 元素。您将需要使用 driver.execute_script() 来获取 shadowRoot 元素的句柄并最终到达“addSearchEngine”元素。

示例python:shadowRoot python

示例 Java:对于 chrome://downloads/ shadowRoot java


推荐阅读