我最近遇到了一个问题,所有使用 selenium 模块的 python 脚本都坏了,显然是因为谷歌浏览器更新。似乎 selenium/google chrome 总是要求选择用户配置文件,无论 python 脚本中提供了什么选项,例如“user-data-dir”根本没有效果。即使在无头模式下也会发生这种情况。原始脚本能够在后台下载 pdf,而无需“user-data-dir”选项。

有没有人遇到过同样的问题并找到了解决方案?

下面是一个之前运行良好的示例代码。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument('--headless')
#options.add_argument(r"--user-data-dir=C:\Users\xxx\AppData\Local\Google\Chrome\User Data\Profile 1") # this option does not make any difference
options.add_argument('log-level=3')
options.add_experimental_option("prefs", {
     "download.default_directory": directory,
     "download.prompt_for_download": False,
     "download.directory_upgrade": True,
     "plugins.always_open_pdf_externally": True,
})
driver = webdriver.Chrome(options=options)
driver.get("http://www.google.com") #original code used a different website

在 python 中使用 selenium 无需选择用户配置文件。

3

  • 不是一个编程问题,只是一个配置问题,因为 Chromium 版本之间的变化很大,因此您会看到许多关于自版本 122 以来在 Headless 中引入的更改的问答。您看不到的是所有已删除的重复问答,因为这不是一个合适的主题,但是我的一些答案仍然未被删除,他们说您应该在版本 128 之前迁移您的方法,因为您需要迁移的警告自 v 122 以来就存在,所以今天只在尝试决定要更改什么时才这样做。测试--headless=old几天左右是否有效


    – 


  • 例如在过去一个小时左右


    – 

  • 另外,考虑到 Python 历史上使用了与基本 Windows 操作系统路径完全不同的方法,因此也许可以尝试options = Options() options.add_argument('--profile-directory=Profile 1') options.add_argument("user-data-dir=C:\\Users\\Tumas04\\AppData\\Local\\Google\\Chrome\\User Data\\") #Path to your chrome profile driver = webdriver.Chrome(executable_path="C:\\chromedriver.exe", options=options)使用单个正斜杠C:/path


    – 


$(function() {
$(“.js-gps-inline-related-questions .spacer”).on(“click”, function () {
fireRelatedEvent($(this).index() + 1, $(this).data(‘question-id’));
});

function fireRelatedEvent(position, questionId) {
StackExchange.using(“gps”, function() {
StackExchange.gps.track(‘related_questions.click’,
{
position: position,
originQuestionId: 78976838,
relatedQuestionId: +questionId,
location: ‘inline’,
source: ‘Baseline_Fallback’
});
});
}
});

function toggleInlineRelated(showMore) {
var inlineRelatedLess = document.getElementById(“inline_related_var_a_less”);
var inlineRelatedMore = document.getElementById(“inline_related_var_a_more”);

var inlineRelatedSeeMore = document.getElementById(“inline_related_see_more”);
var inlineRelatedSeeLess = document.getElementById(“inline_related_see_less”);

if (showMore) {
inlineRelatedLess.classList.add(“d-none”);
inlineRelatedSeeMore.classList.add(“d-none”);

inlineRelatedMore.classList.remove(“d-none”);
inlineRelatedSeeLess.classList.remove(“d-none”);
}
else {
inlineRelatedMore.classList.add(“d-none”);
inlineRelatedSeeLess.classList.add(“d-none”);

inlineRelatedLess.classList.remove(“d-none”);
inlineRelatedSeeMore.classList.remove(“d-none”);
}
}

0