我正在尝试用python和selenium制作一个脚本,它将打开一个网站并单击一个按钮。问题是我必须先关闭chrome才能运行脚本,否则会出现以下错误:
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
有没有办法避免每次运行脚本之前都关闭chrome?
我的代码:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
PATH = "C:\Program Files (x86)\chromedriver.exe"
options = webdriver.ChromeOptions()
options.add_argument("user-data-dir=C:/Users/username/AppData/Local/Google/Chrome/User Data")
driver = webdriver.Chrome(executable_path=r'C:\Program Files (x86)\chromedriver.exe', chrome_options=options)
driver.get("https://disboard.org/sv/dashboard/servers")
link = driver.find_element_by_link_text("bump")
link.click()
如果您可以同时使用您的Chrome配置文件和您的自动化配置文件对您的用例至关重要,那么这里有一个可能的解决方案:
>
在当前Chrome中的所需配置文件上启用同步。
使用第二版Chrome的所需配置文件登录,并在那里启用同步。
在代码中使用与第二版Chrome兼容的chrome驱动程序。
同步不加载所需的所有内容可能会有一些问题,但是如果它是简单的,比如保存密码,那么这应该可以工作。
出现问题的原因是您添加了以下参数:
options.add_argument("user-data-dir=C:/Users/A127538/AppData/Local/Google/Chrome/User Data")
参数是指示硒使用您的本地铬配置文件。因此,当您打开chrome会话时,除非您关闭浏览器会话,否则自动化无法执行。
删除参数以执行独立的自动化测试配置文件。
请参阅下文,了解您的问题中提供的修正代码
from selenium import webdriver
PATH = "C:\Program Files (x86)\chromedriver.exe"
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(executable_path=PATH, options=options)
driver.get("https://disboard.org/sv/dashboard/servers")
link = driver.find_element_by_link_text("bump")
link.click()
此错误消息...
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
...表示用户数据目录默认值已在使用中,因此ChromeDriver无法访问该目录并启动/生成新的浏览上下文,即Chrome浏览器会话。
在这种情况下,您可以按照以下步骤添加/创建新的Chrome配置文件,并将其用于AUT(正在测试的应用程序):
Default
旁边创建了一个新的子目录Profile 1
现在,您可以使用Profile 1
子目录,如下所示:
options = Options()
options.add_argument("start-maximized")
options.add_argument("--profile-directory=Profile 1")
options.add_argument("--user-data-dir=C:/Users/user/AppData/Local/Google/Chrome/User Data")
driver = webdriver.Chrome(executable_path=r'C:\BrowserDrivers\chromedriver.exe', options=options)
driver.get("https://www.google.com/")
您可以在以下网站找到一些相关的详细讨论:
当我试图使用让当前用户使用Selenium启动Chrome时,我得到一个错误,如下所示: 如何修复此错误?
问题内容: 我将用户导向器设置为这样的默认用户数据目录(因此,我不必担心每次都要输入网站密码并登录): 现在,我希望我的Gmail出现,但它要求我登录。 此外,当我打印所需的功能时,似乎根本没有设置用户数据目录: {u’takesScreenshot’:是,u’acceptSslCerts’:是,u’networkConnectionEnabled’:否,u’mobileEmulationEnab
我正在使用Symfony Panther和Laravel框架。我用这个时出错了 未知错误:无法为用户数据目录创建临时目录{"异常":"[对象](Facebook\WebDriver\Exception\Unknown nErrorException(代码:0): 我已经安装了适用于Windows 7.4.2的XAMPP。 PHP:7.4.2,Apache:2.4.41 创作者json [2020-
我是mysql和php的新手。 一直致力于为用户创建一个带有表的数据库。 我已经成功地将用户添加到数据库中,他们的密码是md5(是的,我知道它不安全),它不会在线启动。 我的问题是,如何根据用户正确的用户名和密码登录。 这是我的密码 我的逻辑是taht查询运行后,它将返回true或false。 如果为真,则显示成功登录,否则不成功。 然而,即使我输入了正确的用户名和密码,我仍然会收到一条不成功的登
在多用户系统中,用UserDir指令可以允许每个用户在其宿主目录中拥有一个网络站点。使用URL http://example.com/~username/ 的访问者可以获得用户"username"的宿主目录中的内容或者用UserDir指定的子目录中的内容。 用户网站目录 相关模块 相关指令 mod_userdir UserDir DirectoryMatch AllowOverride 用User
我是JavaFx新手,尝试在我的应用程序中实现它的浏览器。由于在每次新启动时重新加载所有图像相当耗时,我想将它们存储在一些缓存目录中,但一直未能做到这一点。我尝试使用setUserDataDirectory(…) 然后我发现这是一个很好的帖子,但首先,我还不允许在那里发表评论,其次,它似乎只针对JavaFX2.2。那里发布的内容对JavaFx 8仍然适用吗?如果是这样:有没有一种简单的方法来实现这