加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby webdriver:如何在脚本运行时捕获按键?

发布时间:2020-12-16 21:01:19 所属栏目:百科 来源:网络整理
导读:我正在使用 ruby中的WebDriver打开一组URL – 一种幻灯片,在“幻灯片”(页面)之间间隔3秒.查看发生这种情况的人可能会单击Space,我需要将该页面URL保存到另一个文件中.我怎么能处理这些中断 – 抓住Space的事件? require "watir-webdriver"urls = [...list
我正在使用 ruby中的WebDriver打开一组URL – 一种幻灯片,在“幻灯片”(页面)之间间隔3秒.查看发生这种情况的人可能会单击Space,我需要将该页面URL保存到另一个文件中.我怎么能处理这些中断 – 抓住Space的事件?
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”),脚本将:

>导航到网址.
>询问是否应该捕获网址.
>如果用户在10秒内没有输入任何内容,则会进入下一个网址.因为速度太快,我从3改了.您可以在Timeout :: timeout(10)行中将时间更改回3秒.
>如果用户确实输入了某些内容,则在输入为空格时将保存该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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读