从Python启动Selenium(subprocess.Popen与os.system)

0 投票
2 回答
2535 浏览
提问于 2025-04-16 15:22

我在用 Python 启动 selenium 2 的 jar 文件时,使用了 subprocess.Popen,这是我在准备测试时的做法。

在 Firefox 浏览器上这个方法运行得很好,但当我尝试用谷歌浏览器时,它加载页面失败,出现了一个“Aww, snap”的错误。它在一个奇怪的地方寻找它的配置文件:$SELENIUM_JAR/"/var/folders/Qg/QgltsVp+FL0PDThAc5yUeE+++TM/-Tmp-/customProfileDir2e33faaabf3d4fb18491510228814229"/Default/Bookmarks

为了测试,我手动启动了 selenium,结果一切正常。接着我尝试用 os.system 来启动,没想到这也能正常工作。

不过,使用 os.system 有很多缺点,比如无法结束 selenium 进程,也无法捕获输出。

我的启动命令是这样的:

self.p = subprocess.Popen(to_execute, env=os.environ, shell=True, cwd=self.path_to_selenium, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

其中 to_executejava -jar selenium-server.jar -userExtensions user-extensions.js -port 4444

我还尝试过调整 shell=False,去掉标准输入输出,或者通过 `/bin/bash -c` 启动,但结果没有什么不同。

有没有人知道我漏掉了什么?

2 个回答

1

试着把 to_execute 设置成一个列表,而不是字符串,像这样:

to_execute = [
    'java', 
    '-jar', 'selenium-server.jar',
    '-userExtensions', 'user-extensions.js',
    '-port', '4444']
0

我会简单地接受这个问题不是跟Python有关,而是跟我的框架有关系。

撰写回答