【问题标题】:Launching selenium from python (subprocess.Popen vs. os.system)从 python 启动 selenium (subprocess.Popen vs. os.system)
【发布时间】:2011-08-01 19:24:37
【问题描述】:

当我引导我的测试时,我在 python 中使用 subprocess.Popen 启动 selenium 2 jar 文件。

这适用于 FF,但是当我尝试启动 google chrome 时,它​​无法加载页面(出现“Aww,snap”-错误),它试图在一个奇怪的地方寻找它的个人资料:$SELENIUM_JAR/"/var/folders/Qg/QgltsVp+FL0PDThAc5yUeE+++TM/-Tmp-/customProfileDir2e33faaabf3d4fb18491510228814229"/Default/Bookmarks

作为测试,我尝试手动启动 selenium 并且效果很好,接下来我尝试使用 os.system 代替,令我惊讶的是效果很好。

使用os.system 有许多缺点,例如无法杀死硒并且也无法捕获输出。

我的打开命令如下所示:

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,删除 stdio 并通过 `/bin/bash -c' 启动,但没有不同的结果

关于我缺少什么的任何想法?

【问题讨论】:

  • 您的问题听起来很奇怪,不幸的是我无能为力。但是,我可以建议您使用 shutDownSeleniumServer 方法(Python API 中的 shut_down_selenium_server)停止 Selenium 服务器,而不是终止进程。这甚至可能使您可以使用os.system
  • 好吧,我有点需要捕获输出也显示错误并知道什么时候可以开始测试。不过谢谢,我会记住的:)
  • 我刚刚意识到我已经调用了shut_down_selenium_server,问题是捕获输出。
  • 我认为我们的框架还有其他问题,与 python 无关

标签: python selenium subprocess


【解决方案1】:

尝试将to_execute 设置为列表而不是字符串,例如:

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

【讨论】:

  • 在这个答案中暗示:只使用subprocess.Popen。不使用其他。
  • 您的意思是使用shell=False?我已经试过了。另外,我只用subprocess.Popen,我只是用os.system作为测试
  • @Nicklas A. 您的 to_execute 似乎是一个字符串。这是一个字符串列表。你试过哪个?
  • 我都试过了。 List + shell=True 对我不起作用,java 说我需要提供 args
  • @Nicklas A.“List + shell=True 不起作用”?其他 3 种组合呢?
【解决方案2】:

我会简单地接受这个问题与 python 无关,而与我的框架有关。

【讨论】:

    猜你喜欢
    • 2013-01-17
    • 2013-07-28
    • 2013-03-09
    • 2015-05-20
    • 2020-01-19
    • 2011-06-16
    • 2018-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多