【发布时间】:2012-03-03 20:46:49
【问题描述】:
我正在使用 WATIR 来控制浏览器,但是有些页面永远不会完全加载所有内容。在 60 秒超时后,WATIR 给了我错误,我可以继续编写命令,但是如果我尝试在 make 函数中使用 WATIR 关闭浏览器,一切都会卡住。
如果我手动关闭浏览器,一切似乎都正常,所以我正在寻找选项来查找 chrome 进程 ID、PID 并使用 ruby 终止进程。
这是我找到的代码示例:
irb
require "watir-webdriver"
proxy = "78.159.102.86:49295"
browser = Watir::Browser.new :chrome, :switches => ['--proxy-server=' + proxy]
bridge = browser.instance_variable_get(:@bridge)
launcher = bridge.instance_variable_get(:@launcher)
binary = launcher.instance_variable_get(:@binary)
process = binary.instance_variable_get(:@process)
process.pid
所有这些方法都给我零。 最后一个 - NoMethodError: undefined method `pid' for nil:NilClass
根据我的研究,我认为我需要获得 PID。 然后我可以关闭进程。
有什么建议吗?我用的是窗户! 到目前为止,Ruby 中似乎没有按名称杀死进程的方法。
编辑:
我发现了 Windows 命令行的工作原理:
taskkill /im Firefox.exe /f /t >nul 2>&1
但由于我使用的是 ruby,所以它给了我错误:
SyntaxError: (irb):1: 未知的正则表达式选项 - f (irb):1: 语法错误, 意外的 tINTEGER,期待关键字_do 或 '{' 或 '(' taskkill /im Firefox.exe /f /t >nul 2>&1
如何从 ruby 执行 cmd 命令?
【问题讨论】:
-
Chrome 卡住了,因为在锁定中无法手动关闭?如果您对开发团队有任何影响,请让他们解决问题。
标签: ruby watir watir-webdriver kill-process