Стажер - функциональные тесты Поиск элемента с потомком, который соответствует
Я пишу скрипт функционального теста, чтобы найти родительский элемент, который имеет дочерний элемент, который можно найти, и, если найден потомок, вернуть родительский элемент. Например:
<div class="contentPane">
<h2>Heading 1</h2>
<p id="first">FIRST TEXT</p>
</div>
<div class="contentPane">
<h2>Heading 2</h2>
<p id="second">SECOND TEXT</p>
</div>
<div class="contentPane">
<h2>Heading 2</h2>
<p id="third"></p>
</div>
Я хочу найти contentPane, который может найти абзац с id="second". Мой тестовый пример для поиска родителя похож на это:
...
findAllCssSelector(".contentPane")
.then(function(array, setContext){
//for every element i in array
//I want to call its findByCssSelector(".second")
//and check if it is found. If it is
//I want to return the ith element in array
// to the command.
})
.findByTagName("h2")
.getVisibleText()
.then(function(text){
assert.strictEqual(text, "Heading 2");
})
....
...
Как мне перебрать каждый элемент массива и вернуть элемент массива в стек контекста?
1 ответ
Решение
Для сложных запросов Xpath, как правило, намного эффективнее, чем ручной поиск по элементам. Вы можете запросить что-то вроде:
.findByXpath('//div[@class="contentPane" and p[@id="second"]]')
Это найдет первый DIV с классом "contentPane", который содержит P с идентификатором "second".