Comme mentionné dans les commentaires, la meilleure solution consiste à mettre à jour les champs d'avoir ids uniques. Toutefois, en supposant que cela ne soit pas possible, vous pouvez résoudre le problème à l'aide d'un localisateur :index
. L'objet page suivante trouve le 2ème champ de couleur, ce qui équivaut à @b.text_field(:id => 'color', :index => 1).set
de Watir:
class MyPage
include PageObject
text_field(:color_1, id: 'color', index: 0)
text_field(:color_2, id: 'color', index: 1)
end
Ce qui serait appelé comme:
page = MyPage.new(browser)
page.color_1 = 'red'
page.color_2 = 'blue'
Si vous essayez réellement le dernier champ, à savoir reproduire @b.text_fields(:id => 'color').last.set
, le :index
serait « -1 »:
text_field(:color_2, id: 'color', index: -1)
Notez que peut être fait semblable lors de la localisation des champs dynamiques ment dans une méthode (par opposition à définie par un accesseur):
class MyPage
include PageObject
def set_colors(color_1, color_2)
text_field_element(id: 'color', index: 0).value = color_1
text_field_element(id: 'color', index: 1).value = color_2
end
end
Vous ne devriez jamais avoir deux éléments html avec le même identifiant. – Abdo
D'une manière ou d'une autre, le développeur Web a utilisé le même identifiant. Que faire si l'un des éléments est caché? – Rocker
Avoir deux éléments sur la même page avec le même identifiant est un code brisé. Peu importe de quel type sont les éléments, ** tout ** deux éléments ayant le même identifiant sur la même page sont erronés. C'est un bug, et il doit être corrigé, comme n'importe quel autre bug. –