【问题标题】:Automatic web-page refresh using xdotool - not sending key after window focus使用 xdotool 自动刷新网页 - 窗口焦点后不发送密钥
【发布时间】:2012-08-15 03:37:48
【问题描述】:

鉴于:

我的 Ubuntu 计算机上打开了带有 [Firefox 页面标题] 页面的 Firefox。

这是我的命令:

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

文档:

带有文档/示例的 xdotool 网站是 here

直接来自 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。

该命令正确地将我的屏幕聚焦到我选择的任何窗口标题,但它不会将 ctrl+r 键发送到窗口,因为网站不会刷新。我没有收到来自命令的错误消息。 (Firefox 中的刷新快捷键是 ctrl+r)

想要的行为:

该命令有望(当它起作用时)应用于我的服务器计算机上 24/7 全天候打开的网络服务器统计页面,我希望它自动刷新页面,以便我可以查看我网站的新流量不用我做任何事情。

编辑:我愿意使用可以提供此功能的其他应用程序,如果您知道其他简单/类似的东西,请提供它作为答案!如果我不能让这个工作,我将默认为下一个最好的事情。

【问题讨论】:

  • 这个键似乎是被 Flash 使用的,而不是被浏览器使用,首先尝试将焦点从插件上移开(如果你使用 Flash)。
  • Opera 浏览器内置了自动页面刷新功能。
  • @EarlGray 我去看看 Opera,谢谢。我不认为命令正在被 Flash 消耗(我正在关注的页面没有任何 Flash),我认为这要么是工具的问题,要么是我在命令中做错了。
  • 由于我使用的是 Firefox,这里有一个自动刷新插件:addons.mozilla.org/en-US/firefox/addon/reloadevery

标签: firefox ubuntu automation page-refresh browser-refresh


【解决方案1】:

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

  • 从终端运行命令(和变体 - 删除/添加参数)。
  • 从 SH 脚本运行命令(和变体 - 删除/添加参数)。
  • 在 F5 和 ctrl+r 键之间切换,因为它们都应该刷新 Firefox 页面。
  • 尝试其他参数,例如:
    • --window 设置密钥要发送到的窗口。
    • --delay 在发送键之前添加延迟,在窗口获得焦点之后。
    • 在发送密钥之前,在窗口获得焦点之后添加睡眠。

我还在脚本中尝试了这些命令,正如 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

【讨论】:

  • 也许你没有找到你的窗口?当您执行类似的操作时会发生什么,如果您使用 Firefox,在此页面上进行测试:xdotool search "firefox - Automatic" key F5,这对我有用。
  • ReloadEvery 似乎消失了,但在撰写本文时,有 Tab Reloader - 工作正常!
【解决方案2】:

我试图将击键发送到应用程序,并且我还得出结论,xdotool 不能按描述的那样工作。我最终使用xvkbd 来做同样的事情。

对于您的示例,以下命令刷新 Firefox 中的页面:

xvkbd -window Firefox -text "\Cr"

【讨论】:

  • 对于那些仍然想使用命令行工具的人来说,这是一个很好的替代解决方案。 +1
  • 这是一个很好的解决方案。但是它只刷新一个 Firefox 窗口。它也可以刷新所有的Firefox弹出窗口吗?
  • 根据 xvkbd 使用 -window 选项的手册“如果有两个或多个窗口具有使用此选项指定的名称,将选择首先找到的窗口”。 -window 选项可以获取窗口 ID,您可以使用stackoverflow.com/questions/2250757/… 获取窗口 ID,然后多次调用 xvkbd。可能值得将此作为一个单独的问题提出 - 其他人可能知道更好的方法。
  • 在 xdotool 以某种方式无法正常工作而浪费了很多神经之后为我工作。非常感谢!
  • 谢谢兄弟!我无法让 Xdotool 与任何这些 cmets 一起工作,但我将 xvkbd 与 xdotool 一起集成到 shell 脚本上,它就像一个魅力!非常感谢@JohnTESlade
【解决方案3】:

我有键绑定 win + shift + s 来获取窗口 id 使用

xdotool getactivewindow getwindowgeometry

win + s 刷新

xdotool key --window savedWindowID ctrl+r

【讨论】:

    【解决方案4】:

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

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

    在 xdotool 3.20140217.1 上运行 Ubuntu 14.04.1

    【讨论】:

      【解决方案5】:

      xdotool似乎不起作用的事实可能与applications detecting and discarding synthesized events有关:

      将击键发送到特定窗口使用不同的 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
      

      【讨论】:

        【解决方案6】:

        对我来说,以下工作:

        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-keys 发送到 Emacs 而不会出现此类问题)。

        【讨论】:

          【解决方案7】:
          xdotool search --onlyvisible --classname Navigator windowactivate --sync key F5
          

          运行arch linux

          【讨论】:

          • --classname Navigator 是我要找的。试过--classname Firefox,--classname firefox,但没有用。
          猜你喜欢
          • 1970-01-01
          • 2015-10-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-04
          • 1970-01-01
          • 2019-06-06
          相关资源
          最近更新 更多