Аз съм нов в света на Watir, използвалwebdriver и geb в предишна компания. Искам да знам дали Watir предлага някакъв метод, който е аналогичен на метода get_elements от webdriver. Вижте по-долу за пример.
Представете си, че следният html съществува в по-голяма страница
<div class="someClass">someText</div>
<div class="someClass">someMoreText</div>
<div class="someClass">evenMoreText</div>
Искам да направя някои твърдения срещу всяко от divs, като локализираме всички елементи на дадения клас и се прелистваме през тях. Използвайки webdriver, мога да го направя по следния начин:
elements = driver.get_elements(:css, ".someClass")
elements.each do |element|
//some assert on element
end
Осигурява ли Ватир еквивалентна конструкция? Не мога да намеря нищо полезно в документацията на Watir.
Отговори:
2 за отговор № 1Можете да направите:
elements = driver.elements(:css => ".someClass")
Или ако знаете, че са всички divs, трябва да направите следното:
elements = driver.divs(:css => ".someClass")
И двата метода ще върнат колекция от елементи, които отговарят на вашите критерии. В първия случай той ще съответства на всеки тип маркер, като при втория случай резултатите ще бъдат ограничени до divs.
След това, с някое от горепосочените, можете да повторите по същия начин:
elements.each do |element|
//some assert on element
end
2 за отговор № 2
Вместо да използвате :css
препоръчвам да използвате :class
вместо това локатор, тъй като обикновено е по-бърз и прави тестовете ви по-четливи:
elements = driver.divs(:class => "someClass")
Също така, не забравяйте :id
, :name
, :text
и други.