如何使用selenium/webdriver打开网站?

3
import time
from selenium import webdriver
driver = webdriver.Chrome('C:\Program Files\Google\Chrome\Application\chrome.exe')
driver.get('https://www.facebook.com')
time.sleep(5)
driver.quit()

错误代码:Executable_path已被弃用,请传递一个服务对象。

以上代码开始打开一个Google Chrome标签,但不选择用户,并且会在Google Chrome显示所有用户的位置停止。我尝试使用特定的配置文件路径,但遇到了各种错误。如果有人能解决这个问题,我将不胜感激,我想以Guest身份打开Chrome标签页。


我假设如果我深入挖掘找到特定用户的路径,它可能会起作用(尽管我尝试过使用Chrome::versions中的配置文件路径),但据我所知(初学者编码人员),这是相当基础的东西,应该可以顺利运行。 - iminertia
1
它报什么错误? - Sergey Sakharovskiy
据我所知,这不是错误,只是警告。真正的错误应该会停止程序。此时您仍然可以使用 Chrome(path),但在下一个版本中,如果您不使用 Chrome(service=Service(path)),它可能会引发错误(并停止程序)。 - furas
错误代码:Executable_path已被弃用,请传入服务对象。@SergeySakharovskiy - iminertia
这并不是一个错误,实际上它正在工作,但是在第4行中(Facebook)它只是打开一个谷歌选项卡而没有选择一个个人资料,然后就不能继续下去了。基本上就好像代码中的“driver.get('https://www.facebook.com')”这一行不存在一样。如果我将其删除,则代码会执行相同的操作。@furas - iminertia
2个回答

6

看起来你的问题包含两个部分。你正在尝试弄清 webdriver 和用户配置文件路径。让我为你回答这两个问题。

在最新版本的 Selenium 中,executable_path 参数已被弃用。现在需要包含可执行路径的服务对象。有两个选项:

服务对象

选项一:使用你的可执行路径

将此导入附加到你的代码中:

from selenium.webdriver.chrome.service import Service

然后,将服务对象包含在代码中:

driver = webdriver.Chrome(service=Service("C:\Program Files\Google\Chrome\Application\chrome.exe"))

选项 #2:让 Web Driver Manager 处理它

当驱动程序变得过时时,这非常方便。无需重新下载驱动程序。

首先,在终端中进入项目目录。如果您使用的是 PyCharm,则无需遍历目录,因为您已经在项目目录中。

使用 pip 安装 Web Driver Manager:

pip install webdriver_manager

现在,无需输入可执行路径:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get("https://www.facebook.com")

选择用户配置文件

这非常简单。首先,打开 Chrome 并在 URL 地址栏中输入 chrome://version/,您将看到配置文件路径。它看起来像这样:C:\Users\yourprofile\AppData\Local\Google\Chrome\User Data\Default

然后,将以下 Chrome 选项包括如下:

options = webdriver.ChromeOptions()
options.add_argument(r"--user-data-dir=C:\Users\yourprofile\AppData\Local\Google\Chrome\User Data")
options.add_argument(r"--profile-directory=Default")
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)

我不知道你是谁,但我会找到你,并感谢你。 (希望你能理解电影的参考) - iminertia
哈哈,我喜欢Taken。请确保给这个答案点赞并标记为正确答案。 - Jonathan Taylor
我的账户需要再过一段时间才能进行点赞,我一旦能够就会点赞。 - iminertia
此外,我建议您将问题标题重命名为更具体的内容,以便未来遇到类似问题的用户可以更容易地找到解决方法。 - Jonathan Taylor
好的,没问题。 - Jonathan Taylor
如果你有空的话,请查看一下我的最新问题,我相信你也可能能够回答它。非常感谢。@Jonathan Taylor - iminertia

0

这对我有用。 服务是您可以下载的Chrome驱动程序的路径。 Chrome驱动程序可以在此处下载:https://chromedriver.chromium.org/downloads

from selenium import webdriver
from selenium.webdriver.chrome.service import Service

s = Service('/Users/macbook/PycharmProjects/chromedriver')
browser = webdriver.Chrome(service=s)
browser.get('https://www.facebook.com')
time.sleep(5)
browser.quit()


  [1]: https://chromedriver.chromium.org/downloads

当我切换到那个并在第3行添加我的chromedriver路径时,我会得到错误代码:selenium.common.exceptions.WebDriverException: Message: 'chromedriver.exe'可执行文件需要在PATH中。请参见https://chromedriver.chromium.org/home - iminertia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接