Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何在each.do列表迭代中选择每个li的子元素?_Ruby_Selenium_Foreach_Selenium Chromedriver_Watir - Fatal编程技术网

Ruby 如何在each.do列表迭代中选择每个li的子元素?

Ruby 如何在each.do列表迭代中选择每个li的子元素?,ruby,selenium,foreach,selenium-chromedriver,watir,Ruby,Selenium,Foreach,Selenium Chromedriver,Watir,我需要浏览一个用户列表,并在新选项卡中打开每个用户。该选项卡应在执行操作时关闭,并返回到第一个选项卡以选择列表中的下一个用户。我无法按顺序选择列表中的下一个用户。问题是每个用户只能通过单击他们的照片来选择,照片是列表项的子元素 HTML 如何定义要选择的元素作为列表中当前li的子元素?在需要使用的循环中 user.a(:class => '_pg23k _9irns _gvoze').click(:control) 原因是浏览器对象可用于搜索主html页面内的元素。如果在循环中使用“br

我需要浏览一个用户列表,并在新选项卡中打开每个用户。该选项卡应在执行操作时关闭,并返回到第一个选项卡以选择列表中的下一个用户。我无法按顺序选择列表中的下一个用户。问题是每个用户只能通过单击他们的照片来选择,照片是列表项的子元素

HTML


如何定义要选择的元素作为列表中当前li的子元素?

在需要使用的循环中

user.a(:class => '_pg23k _9irns _gvoze').click(:control)
原因是浏览器对象可用于搜索主html页面内的元素。如果在循环中使用“browser”,它将查看整个HTML,如果存在多个符合搜索条件的元素,它将返回找到的第一个元素。因此,即使它在循环中,每次都会在页面上找到相同的元素


要使用正在迭代的列表中的当前项,您需要使用您告诉它在遍历列表时分配给列表元素的名称(在本例中为
user

您是否尝试了
user.a(:class=>“\u pg23k\u 9irns\u gvoze”)。单击(:control)
?@TarunLalwani这很有效!谢谢你,朋友!如何使用用户参数代替浏览器@TARUNLALWANITH是遍历列表的工作方式。在命令中
Mylist.users.each_和| index do | user |
。您已经告诉它依次检查集合中的每个项,并且希望引用当前列表项“user”。因此,当您在该循环的内部代码中引用
user
时,它将是集合的当前元素。由于您的集合由HTML
用户中的li项组成,因此该li及其包含的所有HTML元素都将是li。顺便说一句,由于您没有使用项目的索引,您可以使用
。each
而不是
。each_with_index
。each_with_index是我计划创建列表中所有lis的索引时留下的,因为我不确定如何迭代每个列表。我意识到它使用起来简单多了。每一个都很有意义!编辑了答案,希望能让它更有用谢谢@ChuckvanderLinden:-)谢谢@ChuckvanderLinden非常有用!
Mylist = browser.ul(:class => "_8q670 _b9n99")

#Index the UL to open each user in order
Mylist.users.each_with_index do |user|

    #open user in new tab by selecting photo

    browser.a(:class => '_pg23k _9irns _gvoze').exists?
    browser.a(:class => '_pg23k _9irns _gvoze').click(:control)
    browser.windows.last.use

    #performs action and closes tab

      browser.windows.last.close


puts user
puts user.text

end
user.a(:class => '_pg23k _9irns _gvoze').click(:control)