【问题标题】:Closing a Winium from a thread with Ruby使用 Ruby 从线程中关闭 Winium
【发布时间】: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 在我杀死线程后停止了吗?

我在 ruby​​Mine 中工作,使用 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')

标签: ruby selenium winium


【解决方案1】:

我找到了一个解决方案,我将 taskkill 命令传递到控制台,并使用 winium 的映像名称执行了强有力的 exec,这就是诀窍。 system ('taskkill /IM Winium.Desktop.Driver.exe /f')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    相关资源
    最近更新 更多