我试图控制两个谷歌浏览器示例使用两个不同的配置文件。但当我打开第一个配置文件,然后运行第二个浏览器示例与不同的一个我得到一个错误。
from selenium import webdriver
def launch(login, password):
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument(r'--user-data-dir=/home/marek/.config/google-chrome')
chrome_options.add_argument(r'--profile-directory=Profile 3')
second_options = webdriver.ChromeOptions()
second_options.add_argument(r'--user-data-dir=/home/marek/.config/google-chrome')
second_options.add_argument(r'--profile-directory=Profile 4')
driver = webdriver.Chrome(options = chrome_options)
second_driver = webdriver.Chrome(options = second_options)
driver.get('http://google.com')
second_driver.get('http://google.com')
if __name__ == '__main__':
login = 'xxx'
password = 'xxx'
launch(login,password)
错误日志:
File "auto.py", line 19, in <module>
launch(login,password)
File "auto.py", line 11, in launch_draw
driver = webdriver.Chrome(options = chrome_options)
File "/usr/lib/python3.7/site-packages/selenium/webdriver/chrome/webdriver.py", line 81, in __init__
desired_capabilities=desired_capabilities)
File "/usr/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
self.start_session(capabilities, browser_profile)
File "/usr/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/usr/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/usr/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally
(unknown error: DevToolsActivePort file doesn't exist)
(The process started from chrome location /opt/google/chrome/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
(Driver info: chromedriver=72.0.3626.69 (3c16f8a135abc0d4da2dff33804db79b849a7c38),platform=Linux 4.19.23-1-MANJARO x86_64)
有什么办法让它工作吗?
5条答案
按热度按时间lyr7nygr1#
我相信你可以做到这一点,而不需要网格。尝试添加以下参数到ChromeOptions:
tcomlyy62#
谷歌在下面的文章中指出,如果你同时登录了多个谷歌账户,谷歌可能无法告诉你登录的是哪个账户。我认为解决办法是在登录下一个账户之前先注销一个账户,或者使用一些方法将两个账户的cookie分开。这篇谷歌文章可能会帮助你:
https://support.google.com/accounts/answer/1721977?co=GENIE.Platform%3DDesktop&hl=en
gj3fmq9x3#
Selenium Grid将通过并行运行测试来帮助您进行扩展。只需使用以下命令设置集线器和节点:
对于集线器
并且对于节点
1cosmwyk4#
这可能与您指定配置文件目录的方式有关。
下面的代码对我很有效(似乎与我是否登录没有太大关系)。
代码
例如,可以使用以下命令激活第i个浏览器窗口:
或者:
还可以评估jQuery(例如,新选项卡):
当然,您也可以使用 thread_all() 方法在所有浏览器上异步执行此操作。
d将是“n”个chrome驱动程序(每个独立浏览器/配置文件一个)
0dxa2lsx5#
你不能用同一个selenium webdriver控制两个配置文件。尝试通过一次运行一个配置文件来分开它们。使用undetected_chromedriver时的解决方案。这同样适用于普通的selenium webdriver