python - 如何使用两个不同的用户运行 selenium webdriver?

标签 python selenium selenium-webdriver selenium-chromedriver

我在 Ubuntu 服务器上编写了一个小 python 脚本,用于在 headless 模式下运行 chrome 浏览器并打开一个 url(请参阅下面的脚本)。目前我的服务器上有两个不同的用户:假设 user1 和 user2。

我想要实现的目标:

  1. 使用 user1 和 user2 登录(两个终端 session )
  2. 完成后从 user1 启动脚本
  3. 从 user2 启动脚本

如果我使用 user1 启动脚本,一切都会正常。

import sys
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service

def getChromeDriver():
    options = Options()
    options.add_argument("--no-sandbox")
    options.add_argument("--disable-dev-shm-usage")
    options.add_argument("--headless")
    options.add_argument("start-maximized")
    options.add_argument("window-size=1900,1080")
    s = Service("/home/dev/chromedriver")
    driver = webdriver.Chrome(options=options, service=s)
    return driver

driver = getChromeDriver()
driver.get("https://www.google.com")

time.sleep(3)
driver.quit()

当我使用 su - user2 切换到 user2 并启动脚本时,我收到错误消息:DevToolsActivePort 文件不存在。我需要重新启动服务器才能从 user2 执行脚本。但是我无法执行 user1 的脚本(同样的问题)。奇怪的是,当我以 root 身份运行脚本(无需重新启动)时,它就可以工作。

简而言之:似乎我只能与服务器重新启动后首次执行脚本的用户一起运行脚本。

感谢任何帮助或提示。

问候,德博

最佳答案

我认为问题是只有 user1 拥有 /tmp/Crashpad 的权限,因为该用户首先创建了该文件夹。 root 可以在任何地方读/写,因此对于 root 用户来说它可以工作。您的 user2 无法从 /tmp/Crashpad 读取/写入,这会导致错误消息。

要检查用户特定的临时目录是否可以解决您的问题,您可以在使用 user1 运行脚本后发出 chmod -R 777/tmp/Crashpad。这将使该文件夹对任何人都可读/可写。然后尝试使用 user2 运行您的脚本,它应该可以工作。

在 Ubuntu 上,您可以通过添加以下行来设置用户特定的临时目录 导出 TMPDIR=$HOME/tmp 到位于用户 $HOME 文件夹中的 .profile.bashrc 文件。

关于python - 如何使用两个不同的用户运行 selenium webdriver?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72630883/

相关文章:

python - 允许我的 Django 应用程序使用不需要更改配置的 "third party"插件吗?

selenium - Protractor 5.1.1 selenium-webdriver 版本不一致

python - 在 virtualenv 之外找不到项目模块

Appengine 上的 Python 使用 BeautifulSoup ImportError : No module named bs4

python - 我们如何将 "left outer join"用于大尺寸 pandas 数据帧(大于 5~20GB)?

python - 如何在 Python 中使用 Selenium 获取 h1 标签

python - Selenium 中未发现的可用元素

google-chrome - 我从哪里获得 ChromeDriver.exe?下载链接不可用

java - Selenium WebDriver 中 org.openqa.selenium.remote.session.StripAnyPlatform 类的用途是什么?

c# - 使用 Selenium WebDriver 获取标签后的文本