【发布时间】:2018-05-16 23:19:28
【问题描述】:
所以我正在尝试使用 winium 自动化桌面应用程序,并且我想通过脚本自动启动 winium 驱动程序,到目前为止,我能够很好地启动它,但是在关闭它时,那就是问题。
winium = Thread.new{
system (
File.dirname(__FILE__)
+'/Features/Support/support/Winium.Desktop.Driver.exe')
}
sleep 5
winium.kill
但是在我杀死线程之后,如果我用 TCPView 检查我可以看到 winium 仍然打开,如果我尝试多次运行脚本而没有正确关闭 winium,这将导致问题.. 我的问题是我该怎么做确定 Winium 在我杀死线程后停止了吗?
我在 rubyMine 中工作,使用 ruby 2.4.4 并使用 1.6.0 版本的 winium 驱动程序。
【问题讨论】:
-
ruby-doc.org/core-2.2.0/Thread.html#method-i-kill - 说它终止线程并安排另一个线程运行?
-
我做了
a = Thread.new { //some infinite loop },然后a.kill,我得到了:<Thread:0x00000001542e18@(irb):14 sleep>,所以我重试了a.kill,这次得到了<Thread:0x00000001542e18@(irb):14 dead>也许你需要杀死它两次? -
我试过了,我仍然看到 Winium 在 TCPView 中运行,也许我必须使用套接字来关闭端口,这样就可以了?
-
我找到了解决方案,我将 taskkill ccommand 传递到控制台,并使用 winium 的映像名称执行了强制执行,这就是诀窍。
system ('taskkill /IM Winium.Desktop.Driver.exe /f')