从Python启动Selenium(subprocess.Popen与os.system)
我在用 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_execute
是 java -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有关,而是跟我的框架有关系。