У меня есть следующий DOM:перебор дивы с именем того же класса
<form id="slideshow">
<div class="slideshow-item">
<div class="slideshow-item">
<div class="slideshow-item">
</form>
мне нужно перебрать все дивы в этом элементе формы, выполнять какое-то действие на каждый DIV, а затем выйти сразу все див сделано.
Я определил мой локатор как:
divs(:slideShowRow, :xpath => "//div[@class='slideshow-item']")
и попытался итерации как:
slideShowRow_elements.each do |e|
uploadSlideShowImage = e.text_field_element(:xpath => "//input[@type='file']")
execute_script("$(arguments[0]).show();", uploadSlideShowImage)
uploadSlideShowImage.send_keys("//path/to/image_file")
textSlideShowRow = e.text_field_element(:xpath => "//input[@placeholder='Overlay Text']")
textSlideShowRow.send_keys("row_number_x")
end
Выпуск:
Проблема я столкнулся в том, что действие выполняется на только первый элемент, а не на все три элемента.
Итак, цикл работает трижды, так как есть 3 divs, но действие выполняется на одном и том же элементе трижды трижды вместо отдельного элемента div.
PS: Я использую объект страницы с рубиновым и селеновым webdriver.
Это правильный способ повторения элементов. Это поможет показать, что на самом деле делает «// выполнить действие». –
Но проблема, с которой я здесь сталкиваюсь, заключается в том, что действие выполняется только для первого элемента, а не для всех трех элементов. Итак, цикл работает трижды, так как есть 3 divs, но действие выполняется на одном и том же элементе трижды трижды вместо отдельного элемента div. – Smriti
Я добавил атрибут 'id' для каждого из разделов:« 1 »,« 2 »,« 3 ». Когда я запустил 'page.slideShowRow_elements.each {| e | p e.attribute ('id')} 'он правильно выводил« 1 »,« 2 »,« 3 ». Это доказывает, что итерация работает. Если код не выполняет то, что вы ожидаете, я бы предположил, что либо «// выполнить действие» делает что-то не так, либо реализация веб-приложения что-то делает. Вот почему я предлагаю поделиться тем, как вы выполняете действие. В этой заметке также поможет реальная страница, которая воспроизводит вашу проблему. –