8

我一直在编写的脚本运行良好。我刚刚添加了该选项,因此它将使用此代码在 chrome 上打开一个配置文件。

options = webdriver.ChromeOptions
browser = webdriver.Chrome(executable_path=r"C:\Users\princess\AppData\Local\Programs\Python\Python36-32\chromedriver.exe", chrome_options=options)
options.add_argument(r'user-data-dir=C:\Users\princess\AppData\Local\Google\Chrome\User Data')
options.add_argument('--profile-directory=Profile 1')

使用时,我收到此错误代码。

C:\Users\Princess\Desktop>CHBO.py
Traceback (most recent call last):
  File "C:\Users\Princess\Desktop\CHBO.py", line 12, in <module>
    browser = webdriver.Chrome(executable_path=r"C:\Users\princess\AppData\Local\Programs\Python\Python36-32\chromedriver.exe", chrome_options=options)
  File "C:\Users\Princess\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 59, in __init__
    desired_capabilities = options.to_capabilities()
TypeError: to_capabilities() missing 1 required positional argument: 'self'

我怎样才能解决这个问题?

4

2 回答 2

16

创建打开新的Chrome 配置文件,您需要执行以下步骤:

  • 打开Chrome浏览器,单击侧边菜单,然后单击打开URL的设置 chrome://settings/
  • 人员部分中,单击管理弹出窗口的其他人。
  • 单击添加人员,提供人员姓名,选择一个图标,保持项目为该用户创建桌面快捷方式选中,然后单击添加按钮。
  • 您的新个人资料已创建。
  • 新配置文件SeLeNiUm的快照

硒

  • 现在桌面图标将被创建为SeLeNiUm - Chrome
  • 从桌面图标SeLeNiUm - Chrome的属性中获取配置文件目录的名称。例如--profile-directory="配置文件 2"

配置文件目录

  • 获取系统中配置文件目录的绝对路径,如下所示:

    C:\\Users\\Otaku_Wiz\\AppData\\Local\\Google\\Chrome\\User Data\\Profile 2
    
  • 现在通过一个带有方法的Options实例以及 key user-data-dir传递profile-directory的值,如下所示:add_argument()

    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\to\chromedriver.exe', chrome_options=options)
    driver.get("https://www.google.co.in")
    
  • 执行你的Test

  • 观察Chrome使用Chrome 配置文件初始化为SeLeNiUm

硒

于 2018-03-14T14:23:33.530 回答
3

您可以使用options = Options()options = webdriver.ChromeOptions()options = webdriver.ChromeOptions

否则,您将指向一个对象(即webdriver.ChromeOptions),而不是通过包含所需的括号来创建该对象的实例

于 2018-03-14T05:11:49.003 回答