BiT*_*23b 6 python selenium google-chrome selenium-chromedriver chrome-profile
我正在尝试使用默认用户使用 selenium python 库打开网页,脚本使用默认用户至关重要,但如果我的 chrome 浏览器已经打开脚本崩溃并给我这个错误:
selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: user data directory is already in use, please specify a unique value for --user-data-dir argument, or don't use --user-data-dir
Run Code Online (Sandbox Code Playgroud)
我已经尝试了这里给出的所有解决方案:
如果打开另一个 chrome 实例,Selenium chromedriver 将不会启动 URL
Selenium 不会在新选项卡中打开新 URL(Python 和 Chrome)
并阅读旧版 chromedriver 版本中存在错误,但已在 chrome 74(我正在使用)中修复:https : //github.com/SeleniumHQ/docker-selenium/issues/741
from selenium import webdriver
import time
from getpass import getuser
def run():
# Chrome driver path
chromedriver = r'C:\Users\user1\Downloads\chromedriver_win32\chromedriver_new.exe'
# Get chrome webdriver options and set open the browser as headless
chrome_options = webdriver.ChromeOptions()
#chrome_options.add_argument("--headless")
# Fix for selenium Issue 2907
#chrome_options.add_argument('--log-level=3')
#chrome_options.add_experimental_option('excludeSwitches', ['enable-logging'])
# Load current user default profile
current_user = getuser()
chrome_options.add_argument(
r"--user-data-dir=C:\Users\{}\AppData\Local\Google\Chrome\User Data".format(current_user))
# didable "Chrome is being controled by an automated test software"
chrome_options.add_argument('disable-infobars')
# get Chrome to stay open
chrome_options.add_experimental_option("detach", True)
# open browser with options and driver
driver = webdriver.Chrome(options=chrome_options, executable_path=chromedriver)
driver.get(r'https://www.youtube.com/watch?v=dQw4w9WgXcQ')
if __name__ == '__main__':
run()
Run Code Online (Sandbox Code Playgroud)
如果我在没有 chrome 浏览器的情况下运行它,打开它就好了,否则它会崩溃
我还想使用我的默认 Chrome 配置文件运行 Selenium,但我遇到了同样的问题。我通过将 UserData 文件夹复制到另一个位置然后使用新位置来解决这个问题。这是我的完整代码:
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("user-data-dir=C:\\Users\\myusername\\Desktop\\User Data")
options.add_argument("--profile-directory=Profile 1");
browser = webdriver.Chrome(options=options)
browser.get('https://www.google.com')
Run Code Online (Sandbox Code Playgroud)
如果您想使用默认的 Chrome 配置文件而不是为 Selenium 创建的特定配置文件,请从代码中删除以下行。
options.add_argument("--profile-directory=Profile 1");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2192 次 |
| 最近记录: |