如何在 watir 中半自动化网页?

How to semi-automate webpage in watir?

我正在使用 Ruby 和 Watir 打开 irctc 网页。我可以自动输入用户名和密码。 当涉及到验证码时,我无法使用任何语法来输入验证码。因为事先不知道会是什么。我只想要一种可以手动输入验证码的简单方法。在输入验证码时,我的脚本应该等待,然后它应该从脚本执行下一个语法。

#require 'watir-webdriver'
require 'watir'

caps = Selenium::WebDriver::Remote::Capabilities.firefox
caps['acceptInsecureCerts'] = true
driver = Selenium::WebDriver.for(:firefox, desired_capabilities: caps)
browser = Watir::Browser.new(driver)

# text to show on console
puts "Beginning of the automation of IRCTC webpage"

browser.goto("https://www.irctc.co.in/eticketing/loginHome.jsf")

#browser.button(:id, "returnButton").click

#set a variable
search_text = "my_username"

#puts " Step 2: enter "+ search_text +" in the search text field."
browser.text_field(:name, "j_username").set search_text # "j_username" is the name of the search field

#browser.span(:class, "RveJvd snByac").click # "RveJvd snByac" is the class-name of the Search button

search_text = "my_password"
browser.text_field(:name, "j_password").set search_text

#Here I need to enter CAPTCHA before proceeding to next syntax.

browser.button(:type, "submit").click

手动输入数据有两种方式: 1.添加sleep命令,可以手动在浏览器输入验证码:

sleep 30 
  1. 添加提示用户通过控制台输入验证码的获取命令(我不知道验证码字段的实际名称):

    验证码=gets.chomp

    browser.text_field(:name, "captcha").set captcha

验证码的全部意义在于防止自动访问网站。通常使用验证码的网站也有禁止使用机器人或任何类型的自动化访问其网站的服务条款。

比尝试抓取网站更好的方法是使用提供的 API。

IRCTC 确实有 API,您可以在此处获取相关信息:http://api.erail.in/

使用 api 比尝试通过 scraping 和网络自动化来做你想做的更可靠、更快、更不脆弱。我还建议查看 REST-CLIENT gem 以促进发出请求和处理响应。