我正在使用 WATIR 来控制浏览器,但是有些页面永远不会完全加载所有内容。在 60 秒超时后,WATIR 给了我错误,我可以继续编写命令,但是如果我尝试使用 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
但是因为我在使用红宝石,所以它给了我错误:
SyntaxError: (irb):1: unknown regexp option - f (irb):1: syntax error, unexpected tINTEGER, expecting keyword_do or '{' or '(' taskkill /im Firefox.exe /f /t >nul 2>&1
如何从 ruby 执行 cmd 命令?