Как выполнить итерацию с более чем одним элементом на странице - PullRequest
0 голосов
/ 07 января 2019

У меня есть несколько кнопок, чтобы нажать на одной странице. Как перебрать и щелкнуть по каждому из них?

def btnConectar()


   elements = all("button[data-control-name='srp_profile_actions']").count 

    puts elements

    first("button[data-control-name='srp_profile_actions']").click 
    find("section[class=modal]")
    find("button[class='button-primary-large ml1']").click

end

Ответы [ 2 ]

0 голосов
/ 08 января 2019
 def btnConectar()

        page.all("button[data-control-name='srp_profile_actions']").each do |el|

        while page.has_css?("button[data-control-name='srp_profile_actions']")  

        el.click #Click the button
        find("section[class=modal]") #Modal mapping
        click_button(class: %w(button-primary-large ml1)) #Click the button
        sleep 3

        end

    end

end
0 голосов
/ 07 января 2019

all возвращает массив, похожий на объект Capybara :: Result. Вы можете повторить это, используя стандартные перечисляемые методы ruby.

all("button[data-control-name='srp_profile_actions']").each do |el|
  el.click
  find("section[class=modal]") # Not sure what this is for - if it's an expectation/assertion it should be written as such
  click_button(class: %w(button-primary-large ml1) 
end

Это будет работать до тех пор, пока нажатие кнопки не заставит браузер перейти на другую страницу.

Если при щелчке браузер переместится на другую страницу, все остальные элементы в объекте Capybara :: Result станут устаревшими (что приведет к ошибке ссылки на устаревший элемент на следующей итерации), и вы не будете возможность повторять больше. Если это ваш случай, вам понадобятся подробности о том, что именно вы делаете. Такие вопросы, как оригинальная кнопка все еще существует на странице после нажатия кнопки button-primary-large, или вы можете повторять, просто нажимая первую соответствующую кнопку снова и снова? Если он все еще существует, он изменяется каким-либо образом, чтобы указать, что на него уже нажали, или число / порядок кнопок на странице гарантированно будет стабильным? Вероятно, это поможет понять, если вы разместите фрагмент HTML-кода для первой и второй итерации.

...