Chrome 更新到版本 127 后,我的所有 Selenium 脚本都会引发错误,因为在启动浏览器时我总是必须选择默认搜索引擎。
我使用 ChromeDriver 127.0.6533.72。
有人遇到同样的问题吗?
是的,Chrome 127 及其对应的 ChromeDriver 版本在首次启动时引入了选择默认搜索引擎的提示,这可能会破坏现有的 Selenium 脚本。
以下是一些可能的解决方案:
1. 使用命令行参数禁用首次运行体验:
在启动 Chrome 选项时,添加以下参数:
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--disable-features=FirstRunUi")
driver = webdriver.Chrome(options=chrome_options)
这将禁用首次运行体验,包括选择默认搜索引擎的提示。
2. 预先设置默认搜索引擎:
可以使用 Chrome 的命令行参数预先设置默认搜索引擎,从而避免弹出提示。例如,要将 Google 设置为默认搜索引擎,请使用以下参数:
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("'--make-default-search-provider-data=https://www.google.com/search?q=%s', '--default-search-provider-name=Google'")
driver = webdriver.Chrome(options=chrome_options)
请注意,需要根据的首选搜索引擎修改 URL 和名称。
3. 使用较旧版本的 Chrome 和 ChromeDriver:
如果不想更改脚本,则可以使用不受此问题影响的 Chrome 和 ChromeDriver 的旧版本。但是,建议尽可能使用最新版本,以利用最新的安全更新和功能。
4. 处理弹出窗口:
尽管这不是最佳解决方案,但可以编写代码来处理弹出窗口并自动选择默认搜索引擎。可以使用 Selenium 的
WebDriverWait
和
expected_conditions
模块来实现这一点。
以下是一个使用
WebDriverWait
处理弹出窗口的示例:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
# ... your code ...
driver = webdriver.Chrome()
try:
# 等待弹出窗口出现
search_engine_popup = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "searchform"))
)
# 选择默认搜索引擎(例如,Google)
google_button = search_engine_popup.find_element(By.XPATH, "//button[text()='Google']")
google_button.click()
except TimeoutException:
print("未找到搜索引擎弹出窗口")
# ... your code ...
请注意,此代码示例假设弹出窗口中存在一个 ID 为 “searchform” 的元素,并且有一个按钮包含文本 “Google”。需要根据实际情况调整代码。
希望这些解决方案能帮助解决 Chrome 127 中的默认搜索引擎问题。
标签:python,selenium-webdriver From: 78787332