【问题标题】:How to generate key strokes from a batch file?如何从批处理文件中生成击键?
【发布时间】:2014-10-17 11:24:44
【问题描述】:

我想创建一个批处理文件来执行以下操作:

  • 启动 selenium 服务器(webdriver-manager start)
  • 运行量角器测试(protractor conf.js)
  • 停止 Selenium 服务器()

这需要 2 个不同的命令提示符,因为 webdriver-manager start 将继续运行,同时需要执行测试

到目前为止,我已经实现了以下目标。我创建了一个包含以下内容的 .bat 文件:

start runTests.cmd
webdriver-manager start
Ctrl-C(**DOES NOT WORK**)

但是,我无法找到关闭 Selenium 服务器的方法(通过在执行 webdriver-manager start 命令的同一窗口上按 Ctrl+C 来实现)

【问题讨论】:

  • 我创建了一个 cmd 文件,内容如下: start start_webdriver.cmd start runTests.cmd 但是,要关闭服务器,命令 Ctrl+C 需要在运行的窗口上执行服务器已启动。
  • 我可以建议您编辑您的问题吗?请确保那里有一个实际问题,以及到目前为止您尝试过的详细信息。然后你会发现你的问题得到了更多的关注并且不太可能被标记下来。谢谢。
  • 谢谢伊恩。希望现在问题更清楚了!
  • 那么,你会说你的问题实际上是如何关闭服务器,从批处理文件运行它?如果是这样,除了向窗口发送 Ctrl+C 之外,您是否考虑过其他解决方案?杀掉进程呢?
  • 我也检查过。但是杀死进程并不是一个非常干净的解决方案。我想知道批处理文件中是否有一些内置机制来发送 Ctrl+C 命令。或者关闭 webdriver 的其他更好的选择

标签: batch-file selenium selenium-webdriver protractor


【解决方案1】:

您可以使用 VB 脚本生成击键,该脚本可以从批处理文件中调用。

我关注了这个帖子:http://www.w7forums.com/threads/f5-key-via-batch-file.18046/,用 ^{C} 替换 {F5} 代替 Ctrl+C。所以我的文件看起来像:

Set objShell = CreateObject("WScript.Shell")
objShell.SendKeys "^{C}"

您需要使用“.vbs”扩展名保存此文件。

我还从这个答案VBScript - switching focus to window using AppActivate 中找到了如何将焦点设置到另一个窗口(你知道它的标题)。首先执行此操作,您可以将击键定向到相应的窗口,因此:

Set objShell = CreateObject("WScript.Shell")
objShell.AppActivate "Untitled - Notepad"
objShell.SendKeys "^{C}"

我尝试了一个空的记事本实例,因此您需要适当地更改窗口标题字符串。 (在记事本中Ctrl+C不做任何事情,但是Alt+F4关闭它,所以我用"%{F4}"来测试它。)

然后你可以简单地从你的批处理文件中调用 VBS 文件来运行它。

【讨论】:

  • 谢谢伊恩。因此,使用 VB 脚本似乎是解决方案,因为批处理文件不提供任何本机支持发送键,如 Ctrl+C
  • 是的。也感谢你——我发现了一些我也不知道的东西!编辑问题的标题以更准确地描述问题是个好主意,这样其他人会更容易找到问题的解决方案。
猜你喜欢
  • 1970-01-01
  • 2020-12-24
  • 2016-06-06
  • 2016-08-07
  • 2016-07-29
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
  • 1970-01-01
相关资源
最近更新 更多