selemium

Я пришёл в автоматизацию из разработки (если то, чем я занимался, можно таковым назвать), поэтому следующий трюк для меня был не так очевиден.

Если мы найдём элемент так:

  1. WebElement parent = driver.findElement(By….);

то элемент, который в DOM модели является потомком этого элемента, можно найти используя метод findElement(By….), вызвав его прямо на элементе parent.

Вот так:

  1. WebElement child = parent.findElement(By….);

Рабочие примеры вы можете посмотреть ТУТ. Тестовая страница имеет тэги с одинаковыми id. Как раз это и демонстрирует тест “selectElements”. Все последующие тесты обращаются разными способами к элементам потомкам относительно элемента родителя.

Тонкость тут только одна. Если child элемент вы ищете по xpath, то XPATH ДОЛЖЕН НАЧИНАТЬСЯ С ТОЧКИ (.//xpath). Иначе он будет искать не относительно найденного элемента. Можете в этом сами легко убедиться, сравнив тесты “badSelectElementRelativeToParentByXpath” и “selectElementRelativeToParentByXpath”. В первом тесте он схватит первый подошедший под описание элемент, а во втором — выберет именно то, что нам нужно.

Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Опубликовать в Яндекс