自动网页刷新使用xdotool – 窗口焦点后不发送密钥

鉴于:

我在Firefox电脑上打开Firefox页面标题页面。

这是我的命令:

xdotool search "[Firefox Page Title]" windowactivate --sync key --clearmodifiers ctrl+r 

文档:

有文档/例子的xdotool网站在这里 。

直接来自xdotool网站的示例:

 # As of version 2.20100623, you can do this simpler version of above: xdotool search "Mozilla Firefox" windowactivate --sync key --clearmodifiers ctrl+l 

笔记:

我正在使用xdotool版本2.20110530.1。

该命令正确地将我的屏幕集中到我select的任何窗口标题,但是它不会将ctrl + r键发送到窗口,因为网站不刷新。 我从命令没有收到错误消息。 ( 在Firefox中刷新快捷方式是Ctrl + R

想要的行为:

该命令将希望(当它的工作)应用到我的服务器计算机上全天候开放的Web服务器统计信息页面,我希望它自动刷新页面,以便我可以查看新的stream量到我的网站,而无需我做任何事。

编辑:我打开使用其他应用程序,可以提供这种function,如果你知道别的东西很容易/类似,请提供它作为答案! 如果我不能得到这个工作,我会默认到下一个最好的事情。

我试图发送按键到应用程序,我也得出结论,xdotool只是不能像描述的那样工作。 我结束了使用xvkbd做同样的事情。

对于你的例子,下面的命令在Firefox中刷新页面:

 xvkbd -window Firefox -text "\Cr" 

尝试了几种不同的方法让xdotool正常工作后, 我倾向于认为xdotool本身就是问题 。 这是我试过的,没有工作。

  • 从终端运行命令(和变化 – 删除/添加参数)。
  • 从SH脚本运行命令(和变体 – 删除/添加参数)。
  • 在F5和ctrl + r键之间切换,因为它们都应该刷新一个Firefox页面。
  • 尝试其他参数,例如:
    • – 窗口设置密钥将被发送到的窗口。
    • – 在窗口关注之后,延迟发送密钥之前添加延迟。
    • 在窗口关注之后,在发送密钥之前添加休眠。

我也在脚本中尝试了这些命令,就像xdotool的首页一样,尽管它声称这是“旧”版本,因为它被分成多个命令。 “新”版本是我以前试图执行的版本,是一个单一的命令(见问题)。

 WID=`xdotool search "Firefox Page Title"` xdotool windowactivate --sync $WID xdotool key --clearmodifiers ctrl+r 

所有上述尝试总是正确地集中到我想要的窗口,但它不发送密钥是否是F5或ctrl + r。

但是,以下工作正常:

 xdotool selectwindow key ctrl+r 

要么

 xdotool selectwindow key F5 

selectwindow命令在执行时将光标移动到一个矩形选择工具上,在这一点上,您可以选择要聚焦的窗口,在这种情况下,可以通过ctrl + r或F5键发送窗口。 不幸的是,这不是我正在寻找的,因为它需要用户输入才能正常工作。

最终解决方案

我的解决方案(因为我试图使用xdotool来不断刷新一个网页)是使用ReloadEvery Firefox插件,刷新任何你选择的时间间隔设置的页面。 它打算成为Opera浏览器内置的自动页面刷新功能的复制品,到目前为止,它运行良好。

对于那些使用Chrome浏览器并且正在寻找类似解决方案的用户,您也可以使用大量的附加组件。 https://chrome.google.com/webstore/search/auto%20refresh

我有键绑定WIN + SHIFT + S来获取窗口ID使用

 xdotool getactivewindow getwindowgeometry 

并赢得+ s刷新

 xdotool key --window savedWindowID ctrl+r 

xdotool似乎不起作用的事实可能与检测和丢弃合成事件的应用程序有关:

向特定窗口发送按键使用不同的API,而不是简单地键入到活动窗口。

[…]

许多程序观察这个标志并拒绝这些事件。

考虑到这一点,我能够使它与下面的一系列命令一起工作。 这将重新加载Chromium和Firefox。

 cwid=$(xdotool getwindowfocus) # Save the current window twid=$(xdotool search --name somename) xdotool windowactivate $twid sleep 0.1 # The key event might be sent before the window has been fully activated xdotool key --window $twid F5 xdotool windowactivate $cwid # Done, now go back to where we were 

下面的xdotool命令完全适合我(切换到第一个找到的Firefox窗口,刷新当前选项卡):

 xdotool search "Navigator" windowactivate key 'ctrl+r' 

在xdotool 3.20140217.1上运行Ubuntu 14.04.1

对我来说,以下作品:

 xdotool search --onlyvisible --class Firefox key F5 

以及

 { xdotool search --onlyvisible --class Firefox windowfocus sleep 0.1 xdotool key ctrl+r } 

 xdotool search --onlyvisible --class Firefox key ctrl+r 

 xdotool search --onlyvisible --class Firefox windowfocus key ctrl+r 

不工作。

所以看起来,使用组合键与修饰符需要一点点延迟,至少在Firefox(我可以发送Ctrl键到Emacs没有这样的问题,但是)。