selenium 如何使用两个不同的用户运行SelensWebDriver?

csbfibhn  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(180)

我在我的Ubuntu服务器上编写了一个小的Python脚本,以便在无头模式下运行Chrome浏览器并打开一个URL(参见下面的脚本)。目前,我的服务器上有两个不同的用户:假设是用户1和用户2。

我想要实现的目标:

1.使用用户1和用户2登录(两个终端会话)
1.完成后从用户1启动脚本
1.从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 file doesn't exist。我需要重新启动服务器才能从user2执行脚本。但是,我不能从用户1执行脚本(同样的问题)。奇怪的是,当我以根用户身份运行该脚本时(无需重启),它就能正常工作。
因此,简而言之:似乎只有在服务器重新启动后第一次执行脚本的用户才能运行该脚本。
如有任何帮助或提示,我们将不胜感激。
问候你,德波

vwkv1x7d

vwkv1x7d1#

我认为问题在于只有user1拥有对/tmp/Crashpad的权限,因为该用户首先创建了该文件夹。root可以在任何位置进行读/写,因此对于根用户,它可以正常工作。您的user2无法从/tmp/Crashpad读取/写入/tmp/Crashpad,这会导致错误消息。
要检查特定于用户的临时目录是否可以解决您的问题,可以在使用user1运行脚本后发出chmod -R 777 /tmp/Crashpad。这将使该文件夹对任何人都可读/写。然后尝试使用user2运行您的脚本,它应该可以工作。
在Ubuntu上,您可以通过将export TMPDIR=$HOME/tmp行添加到.profile或用户$HOME文件夹中的.bashrc文件来设置用户特定的临时目录。

相关问题