gpt4 book ai didi

ruby 网络驱动程序 : how to catch key pressed while the script is running?

转载 作者:数据小太阳 更新时间:2023-10-29 07:17:47 25 4
gpt4 key购买 nike

我正在使用 ruby​​ 中的 WebDriver 打开一组 URL – 一种幻灯片放映,“幻灯片”(页面)之间有 3 秒的间隔。看到这种情况的人可能会单击空间,我需要将该页面 URL 保存到另一个文件中。我如何处理这些中断 - 捕捉 Space pressed 事件?

require "watir-webdriver"

urls = [...list of URLs here...]
saved = []

b = Watir::Browser.new

urls.each do |url|
b.goto url
sleep(3)

# ...what should I put here to handle Space pressed?

if space_pressed
saved << b.url
end
end

最佳答案

看起来您的问题可能可以通过 STDIN.getch 解决。

如果您使用以下脚本创建一个文件,然后在命令提示符下运行它(例如“ruby script.rb”),该脚本将:

  1. 导航到 url。
  2. 询问是否应该捕获 url。
  3. 如果用户在 10 秒内没有输入任何内容,它将继续到下一个 url。我把它从 3 改了,因为它太快了。您可以在 Timeout::timeout(10) 行中将时间改回 3 秒。
  4. 如果用户确实输入了一些东西,如果输入的是空格,它将保存 url。否则它将忽略它并继续前进。

脚本:

require "watir-webdriver"
require 'io/console'
require 'timeout'

urls = ['www.google.ca', 'www.yahoo.ca', 'www.gmail.com']
saved = []

b = Watir::Browser.new

urls.each do |url|
b.goto url

# Give user 10 seconds to provide input
puts "Capture url '#{url}'?"
$stdout.flush
input = Timeout::timeout(10) {
input = STDIN.getch
} rescue ''

# If the user's input is a space, save the url
if input == ' '
saved << b.url
end
end

p saved

一些注意事项:

  • 请注意,输入必须是命令提示符而不是浏览器。
  • 如果用户在分配的超时之前按下某个键,脚本将立即继续到下一个 url。

关于 ruby 网络驱动程序 : how to catch key pressed while the script is running?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20255151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com