在这里编程新手,大约一个月用Ruby。我目前正在玩Watir,并且有一些问题可以简化简单表格填充的自动化过程。
当前代码:
# Start Watir
require 'watir-webdriver'
# Open Firefox w/ Watir
browser = Watir::Browser.new :ff
# Visit URL w/ browser
browser.goto("http://website.com")
# Fill in page name field
browser.text_field(:name => "page_name").set "page_name1"
# Fill in password field
browser.text_field(:name => "password").set "static_password"
# Click publish button
browser.button(:value => "Publish").click
# Puts URL
puts browser.url
我想补充的是:
对此的任何指导都非常感激,我没有太过猜测,我只需要朝着正确的方向努力。
答案 0 :(得分:2)
xxx.times do ... end
page_names.each do |page_name| ... end
{ "http://foo.com" => { :name => "Foo", :password => "super_s3kr3t" } "http://bar.com" => { :name => "Bar", :password => "also_s3kr3t" } }
答案 1 :(得分:2)
Ruby有一个很棒的概念叫做iterables,可以帮助解决这个问题。
第一颗子弹。循环给定次数,例如100。有大约10种不同的方法可以给这只猫上皮,但我最喜欢的只是这个
100.times do
#code lines to be repeated
end
第二个项目符号可能会改变方法,假定你想要的是为站点名称数组中的每一行做一次。
首先创建你的数组,然后使用精彩的.each方法对数组的每一行做一些事情。如果您的数组名为page_names
,那么
page_names.each do |name|
#code to be repeated, use `name` variable at point you need the value
browser.text_field(:name => "page_name").set name
end
这个.each方法几乎可以与任何“集合”项目一起使用,这意味着你最终可以做出看起来像这样的东西
pages.each do |page|
code that does something with page.name
code that does something with page.password
end
第三个子弹,是的迈克尔(我看到刚发布了一个答案)有我所建议的嵌套哈希,虽然你从页面名称开始,这是你知道的部分,而且URL是脚本正在收集的东西,我使用page_name作为外部哈希的键,可以让你查找每个页面名称的url和密码值。 (我假设在那种情况下你会做一些事情,比如随机生成passwwords,因此需要存储它们)
将上述内容与.each相结合,重要的是要知道在使用.each和哈希的情况下,首先要从中获取.each是键,然后是值。因此,如果您使用密码预先填充了上面讨论的嵌套哈希,并且键入了页面名称,那么您可以执行类似这样的操作
pages.each do |page_name, pageinfo|
browser.goto("http://website.com")
browser.text_field(:name => "page_name").set page_name
browser.text_field(:name => "password").set pageinfo[:password]
browser.button(:value => "Publish").click
pages[page_name][:url] = browser.url
end
(鉴于墨菲爱我,我希望我上面犯了一些错误,另一个最无耻的人肯定会发现...幸运的是你可以编辑这些答案来解决这些问题)
答案 2 :(得分:0)
我要做的是为所有页面名称创建一个数组并迭代它。
pages = ["page_name1", "page_name2", "page_name3"]
pages.each {|page| browser.text_field(:name => "page_name").set page}