如何在 Selenium Webdriver Python 3 中使用 Chrome 配置文件[重复]

2024-12-20 08:37:00
admin
原创
175
摘要:问题描述:因此,每当我尝试使用 Chrome 设置(我在默认浏览器中使用的设置)时,请添加options = webdriver.ChromeOptions() options.add_argument("user-data-dir=C:Users... (my webdriver path)&qu...

问题描述:

因此,每当我尝试使用 Chrome 设置(我在默认浏览器中使用的设置)时,请添加

options = webdriver.ChromeOptions()
options.add_argument("user-data-dir=C:Users... (my webdriver path)")
driver = webdriver.Chrome(executable_path="myPath", options=options)

它显示了错误代码

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes n 16-17: truncated UXXXXXXXX escape

在我的 bash 中。我不知道那是什么意思,我很乐意得到任何形式的帮助。提前致谢!


解决方案 1:

接受的答案是错误的。这是官方的正确做法:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = webdriver.ChromeOptions()
options.add_argument(r"--user-data-dir=C:path    ochrome/userdata") #e.g. C:UsersYouAppDataLocalGoogleChromeUser Data
options.add_argument(r'--profile-directory=YourProfileDir') #e.g. Profile 3
driver = webdriver.Chrome(executable_path=r'C:path    ochromedriver.exe', chrome_options=options)
driver.get("https://www.google.co.in")

要在 Windows 上找到配置文件文件夹,请右键单击要使用的 Chrome 配置文件的桌面快捷方式,然后转到属性->快捷方式,您将在“目标”文本框中找到它。

解决方案 2:

要获取路径,请按照以下步骤操作。

在搜索栏中输入以下内容,然后按 Enter

在此处输入图片描述

然后将显示所有元数据。在那里找到配置文件的路径

在此处输入图片描述

解决方案 3:

根据您的问题和代码试验,如果您想打开Chrome 浏览会话,这里有以下选项:

  • 要使用默认的Chrome 配置文件

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = webdriver.ChromeOptions()
options.add_argument("user-data-dir=C:\\Users\\AtechM_03\\AppData\\Local\\Google\\Chrome\\User Data\\Default")
driver = webdriver.Chrome(executable_path=r'C:path    ochromedriver.exe', chrome_options=options)
driver.get("https://www.google.co.in")
  • 注意:您的默认 chrome 配置文件将包含大量书签、扩展、主题、cookie 等。Selenium可能无法加载它。因此,按照最佳实践为您的@Test创建一个新的chrome 配置文件,并在配置文件中存储/保存/配置所需的数据。

  • 要使用自定义的Chrome 配置文件

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("user-data-dir=C:\\Users\\AtechM_03\\AppData\\Local\\Google\\Chrome\\User Data\\Profile 2")
driver = webdriver.Chrome(executable_path=r'C:path    ochromedriver.exe', chrome_options=options)
driver.get("https://www.google.co.in")
  • 在这里,您可以找到有关如何通过 Python 打开 Chrome 配置文件的详细讨论

解决方案 4:

给出的答案都不适合我,所以我做了一些研究,现在有效的代码是这个。我从 chrome://version/ 的配置文件路径中复制了用户目录文件夹,并为配置文件创建了另一个参数,如下所示:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = webdriver.ChromeOptions()
options.add_argument('user-data-dir=C:\\Users\\gupta\\AppData\\Local\\Google\\Chrome\\User Data')
options.add_argument('profile-directory=Profile 1')
driver = webdriver.Chrome(executable_path=r'C:Program Files (x86)chromedriver.exe', options=options)
driver.get('https://google.com')

解决方案 5:

这就是我如何在php selenium webdriver中使用现有 CHROME 配置文件的方法。配置文件 6 不是我的默认配置文件。我不知道如何运行默认配置文件。重要的是不要在 chrome 选项参数前添加 --!所有其他选项变体均不起作用!

<?php
//...
$chromeOptions = new ChromeOptions();
$chromeOptions->addArguments([
    'user-data-dir=C:/Users/MyUser/AppData/Local/Google/Chrome/User Data',
    'profile-directory=Profile 6'
]);

$host = 'http://localhost:4444/wd/hub'; // this is the default
$capabilities = DesiredCapabilities::chrome();
$capabilities->setCapability(ChromeOptions::CAPABILITY, $chromeOptions);
$driver = RemoteWebDriver::create($host, $capabilities, 100000, 100000);

要获取 chrome 配置文件的名称,请转到 chrome://settings/manageProfile,单击配置文件图标,单击“在我的桌面上显示配置文件快捷方式”。然后右键单击桌面配置文件图标并转到属性,在这里您将看到类似“C:\Program Files (x86)\Google\Chrome\Application\chrome.exe” --profile-directory= "Profile 6" 的内容。

另外,我建议您在运行此代码之前关闭所有 chrome 实例。此外,也许您需要关闭 chrome 设置 > 高级 > 系统 > “关闭 Google Chrome 时继续运行后台应用程序”。

解决方案 6:

  1. 通过从您的 chrome 浏览器导航到 chrome://version来获取配置文件名称(您将看到配置文件路径,但您只需要其中的配置文件名称(例如配置文件 1)

  2. 使用您要使用的配置文件关闭所有 Chrome 会话。(否则您将收到以下错误:InvalidArgumentException)

  3. 现在确保您有下面的代码(确保用您的用户文件夹的名称替换 UserFolder。

options = webdriver.ChromeOptions()
options.add_argument("user-data-dir=C:\\Users\\EnterYourUserFolder\\AppData\\Local\\Google\\Chrome\\User Data") #leave out the profile
options.add_argument("profile-directory=Profile 1") #enter profile here
driver = webdriver.Chrome(executable_path="C:\\chromedriver.exe", chrome_options=options)

解决方案 7:

确保您已正确获取配置文件的路径,并且在所述路径中双重转义反斜杠。

例如,Windows 上的默认配置文件通常位于:

"C:\Users/user\AppData\Local\Google\Chrome\User Data\Default"

解决方案 8:

您确定要在 user-data-dir 参数中输入 webdriver 路径吗?这通常是您放置 chrome 配置文件的位置,例如“C:\Users\yourusername\AppData\Local\Google\Chrome\User Data\Profile 1\”。此外,您还需要在目录路径中使用双反斜杠或正斜杠(两者都有效)。您可以使用 os 库来测试您的路径是否有效,例如

import os
os.list("C:\\Users\\yourusername\\AppData\\Local\\Google\\Chrome\\User Data\\Profile 1")

将为您提供目录列表。

我还要补充一点,如果您在使用指定用户配置文件运行 webdriver 时设法使 chrome 崩溃,它似乎会将崩溃记录在配置文件中,下次打开 chrome 时,您会在它异常退出后收到 Chrome 恢复页面的提示。对我个人来说,这有点令人头疼,因此我不再使用带有 chromedriver 的用户配置文件。我找不到解决办法。其他人在这里报告过这个问题,但他们的解决方案似乎都不适合我,或者不适合我的测试用例。https ://superuser.com/questions/237608/how-to-hide-chrome-warning-after-crash
如果您不指定用户配置文件,它似乎每次运行时都会创建一个新的(空白)临时配置文件

解决方案 9:

这对我来说 100% 有效,它显示了我选择的个人资料。

在此处输入图片描述

解决方案 10:

我设法使用以下参数启动我的 chrome 配置文件:

ChromeOptions options = new ChromeOptions();
options.addArguments("--user-data-dir=C:\\Users\/user\\AppData\\Local\\Google\\Chrome\\User Data");
options.addArguments("--profile-directory=Profile 2");
WebDriver driver = new ChromeDriver(options);

您可以在此处了解有关网络驱动程序的更多信息

解决方案 11:

您只需在路径中替换''即可'/'解决问题。

解决方案 12:

import os
from selenium import webdriver
from selenium.webdriver.chrome.options import Options


# path of your chrome webdriver
dir_path = os.getcwd()
user_profile_path = os.environ[ 'USERPROFILE' ]

#if "frtkpr" which is ll be your custom profile does not exist it will be created.
option.add_argument( "user-data-dir=" + user_profile_path + "/AppData/Local/Google/Chrome/User Data/frtkpr" )

driver = webdriver.Chrome( dir_path + "/chromedriver.exe",chrome_options=option )
baseUrl = "https://www.facebook.com/"
driver.maximize_window()
driver.get( baseUrl )

解决方案 13:

打印docker的远程驱动程序配置文件路径并使用它:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
options = Options()
#options.add_argument("user-data-dir=/tmp/.org.chromium.Chromium.jMPqvU/Default/") #Path to your chrome profile
driver = webdriver.Remote("http://192.168.1.236:4444/wd/hub", options=options)
def print_profile():
    driver.get("chrome://version")
    profile=driver.find_element(By.XPATH, "/html/body/div[1]/table/tbody/tr[8]/td[2]")
    print(profile.text)
print_profile()

#driver.get("https://www.tradingview.com/chart/45CxtJik/")
#print(driver.title)

注意:如果驱动程序挂在那里,则意味着驱动程序找不到路径。对我来说,我将路径写为

“/tmp/.org.chromium.Chromium.jMPqvU/Default”

并且它挂在那里,重新启动docker容器并使用以下路径重试:

“/tmp/.org.chromium.Chromium.jMPqvU/Default/”

您需要在末尾添加“/”符号。

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1565  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1354  
  信创国产芯片作为信息技术创新的核心领域,对于推动国家自主可控生态建设具有至关重要的意义。在全球科技竞争日益激烈的背景下,实现信息技术的自主可控,摆脱对国外技术的依赖,已成为保障国家信息安全和产业可持续发展的关键。国产芯片作为信创产业的基石,其发展水平直接影响着整个信创生态的构建与完善。通过不断提升国产芯片的技术实力、产...
国产信创系统   21  
  信创生态建设旨在实现信息技术领域的自主创新和安全可控,涵盖了从硬件到软件的全产业链。随着数字化转型的加速,信创生态建设的重要性日益凸显,它不仅关乎国家的信息安全,更是推动产业升级和经济高质量发展的关键力量。然而,在推进信创生态建设的过程中,面临着诸多复杂且严峻的挑战,需要深入剖析并寻找切实可行的解决方案。技术创新难题技...
信创操作系统   27  
  信创产业作为国家信息技术创新发展的重要领域,对于保障国家信息安全、推动产业升级具有关键意义。而国产芯片作为信创产业的核心基石,其研发进展备受关注。在信创国产芯片的研发征程中,面临着诸多复杂且艰巨的难点,这些难点犹如一道道关卡,阻碍着国产芯片的快速发展。然而,科研人员和相关企业并未退缩,积极探索并提出了一系列切实可行的解...
国产化替代产品目录   28  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用