【问题标题】:ruby splitting array for watir-webdriverruby 拆分数组,用于 watir-webdriver
【发布时间】:2014-05-18 23:40:40
【问题描述】:

有没有办法将一个数组分成两半,然后一次访问每一半 1 array[0] 然后 array[1] 然后对每一半做点什么?

由于网站超时,我正在为一个选择列表填充数组,并希望一次遍历一半列表。

当一次选择所有帐户时,手动或通过 ruby​​ watir-webdriver 脚本网站超时。

这就是我的做法。

b.select_list(:id => 'ctl00_ctl00_MainContent_ContentPlaceHolder2_ListBoxAllAcct').options.each { |option| option.select }
b.button(:id => 'ctl00_ctl00_MainContent_ContentPlaceHolder2_LinkButtonAddAcct').click

然后我一次尝试一个,但对于每个选项值都需要很长时间并创建许多文件下载。

elems = Array.new
values = Array.new
elems = b.select_list(:id => "ctl00_ctl00_MainContent_ContentPlaceHolder2_ListBoxAllAcct").options
0.upto(elems.length - 1) do |i|
  values.push elems[i].text
end

0.upto(values.length - 1) do |i|
  puts values[i]
  b.select_list(:id =>   'ctl00_ctl00_MainContent_ContentPlaceHolder2_ListBoxAllAcct').select values[i]
  b.button(:id => 'ctl00_ctl00_MainContent_ContentPlaceHolder2_LinkButtonAddAcct').click
end

我只是想找到一种方法来选择和处理列表的前半部分,然后将其移动到列表的第二组。非常感谢任何建议或帮助。

【问题讨论】:

  • half = list[0,list.size/2] 会给你列表的前半部分,你是这个意思吗?
  • 嗨 Stefan,是的,我正在寻找列表的一半,选择,然后点击按钮并运行后续步骤。重复列表的后半部分。感谢回复
  • 我不知道问题的 watir 部分,但列表的后半部分将是 list[list.size/2..-1]。祝你好运:-)

标签: ruby arrays watir-webdriver


【解决方案1】:

试试这个:

values = b.select_list(id: 
  'ctl00_ctl00_MainContent_ContentPlaceHolder2_ListBoxAllAcct').options.map(&:text)

bulk_size = values.length / 2

values.each_slice(bulk_size) do |bulk_values|
  b.select_list(id: 
  'ctl00_ctl00_MainContent_ContentPlaceHolder2_ListBoxAllAcct').options.select do |option|
    bulk_values.include? option.text
  end.each do |option|
    option.select
  end
  b.button(id:
    'ctl00_ctl00_MainContent_ContentPlaceHolder2_LinkButtonAddAcct').click
end

如果您发现一半仍然太大,您可以简单地使用bulk_size,例如将其设置为10,而不是values.length / 2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    相关资源
    最近更新 更多