How to use Chrome Profile in Selenium Webdriver Python 3

狂风中的少年 提交于 2019-11-26 04:00:35

问题


So whenever I try to use my Chrome settings (the settings I use in the default browser) by adding

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

it shows me the error code

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

in my bash. I don\'t know what that means and I\'d be happy for any kind of help I can get. Thanks in advance!


回答1:


As per your question and your code trials if you want to open a Chrome Browsing Session here are the following options:

  • To use the default Chrome Profile:

    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\to\chromedriver.exe', chrome_options=options)
    driver.get("https://www.google.co.in")
    
  • Note: Your default chrome profile would contain a lot of bookmarks, extensions, theme, cookies etc. Selenium may fail to load it. So as per the best practices create a new chrome profile for your @Test and store/save/configure within the profile the required data.

  • To use the customized Chrome Profile:

    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")
    
  • Here you will find a detailed discussion on How to open a Chrome Profile through Python




回答2:


Make sure you've got the path to the profile right, and that you double escape backslashes in said path.

For example, typically the default profile on windows is located at:

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




回答3:


Are you sure you are meant to be putting in the webdriver path in the user-data-dir argument? That's usually where you put your chrome profile e.g. "C:\Users\yourusername\AppData\Local\Google\Chrome\User Data\Profile 1\". Also you will need to use either double backslashes or forward slashes in your directory path (both work). You can test if your path works by using the os library e.g.

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

will give you the directory listing.

I might also add that occasionally if you manage to crash chrome while running webdriver with a nominated user profile, that it seems to record the crash in the profile and the next time you open chrome, you get the Chrome prompt to restore pages after it exited abnormally. For me personally this had been a bit of headache to deal with and I no longer use a user profile with chromedriver because of it. I could not find a way around it. Other people have reported it here, but none of their solutions seemed to work for me, or were not suitable for my test cases. https://superuser.com/questions/237608/how-to-hide-chrome-warning-after-crash If you don't nominate a user profile it seems to create a new (blank) temporary one each time it runs



来源:https://stackoverflow.com/questions/52394408/how-to-use-chrome-profile-in-selenium-webdriver-python-3

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!