Size: a a a

QA — Автоматизация

2021 May 20

P

Pavel Korostin in QA — Автоматизация
лучше избегать индексов в локаторах, плохая практика
есть исключения, кода по сценарию именно нужен поиск n-ного элемента (товар, карточка и т.д.)
источник

M

Mari in QA — Автоматизация
сложилось впечатление, что в данном примере нужный отчет всегда первый.
чем этот подход плох? не совсем понятно)
источник

A

Andrey in QA — Автоматизация
Так и делаю) а прямые ссылки не хочу использовать т.к. были случаи, что отчеты пропадали из списка у пользователей с определенными ролями и нужно чтобы автотест именно нашел текст и кликнул по нему или вернул ошибку что ссылка не найдена
источник

A

Andrey in QA — Автоматизация
может быть из-за того что скрипт может не прогрузиться первым и тест кликнет не на ту ссылку)?
источник

M

Mari in QA — Автоматизация
логично) спасибо за ответ
источник

P

Pavel Korostin in QA — Автоматизация
потому что, если пишешь не одноразовые тесты, а для живого, меняющегося продукта, то нужно думать о будущем
зрелость автоматизатора определяется простотой поддержки и использования его кода

представь, что у тебя куча локаторов с индексами, потом добавляют фичу с новым блоком. и тебе нужно во всех этих локаторах менять индексы. А если ты привязываешься именно к блокам, то просто описываешь новый блок и не тратишь время на исправление старого кода
источник

P

Pavel Korostin in QA — Автоматизация
да, тоже верно
источник

M

Mari in QA — Автоматизация
я скорее про примеры где в блоке нужна всегда первая ссылка, можно настроить поиск по блоку и уже внутри него индекс; так то мало кто по своей воле решит индексы писать)))обычно это некие особые страницы
источник

A

Andrey in QA — Автоматизация
хорошо, как мне кликнуть на ссылку с привязкой по ccs?
селектор выглядит так div.plate:nth-child(1) > a:nth-child(1)
попробовал
find("//css[@div.plate:nth-child(1) > a:nth-child(1)='#{text}']").click
не сработало
источник

A

Andrey in QA — Автоматизация
invalid selector: Unable to locate an element with the xpath expression //css[@div.plate:nth-child(1)='Активность в разрезе людей'] because of the following error:
     SyntaxError: Failed to execute 'evaluate' on 'Document': The string '//css[@div.plate:nth-child(1)='Активность в разрезе людей']' is not a valid XPath expression.
источник

M

Mari in QA — Автоматизация
как то над хпас пофиксить🌚
источник

M

Mari in QA — Автоматизация
у тебя нету там простого By.CssSelector?
источник

P

Pavel Korostin in QA — Автоматизация
а что значит "с привязкой по css"?)
у тебя либо css локаторы, либо xpath. нельзя кусок css локатора вставить в xpath
источник

M

Mari in QA — Автоматизация
источник

M

Mari in QA — Автоматизация
driver.findElement(By.cssSelector("ul#fruit li:nth-of-type(1)"));
источник

P

Pavel Korostin in QA — Автоматизация
ну опять же, в блоке может измениться количество ссылок, и нужно будет менять индексы.
если в сценарии написано "выберете первую ссылку" - то да, пишем индекс.
в остальных случаях индексы лучше избегать
источник

LY

Lev Yarushin in QA — Автоматизация
хотите первую ссылку - используйте https://rubydoc.info/github/jnicklas/capybara/Capybara/Node/Finders#first-instance_method
источник

LY

Lev Yarushin in QA — Автоматизация
допишите метод после поиска
источник

A

Andrey in QA — Автоматизация
спасибо, буду пробовать
источник

A

Andrey in QA — Автоматизация
получилось так:
Given(/^Выбираем отчёт "(.*?)"$/) do |text|
 find("//a[.='#{text}']", match: :first).click
end
понимаю, что это неправильно, позже поправлю)
источник