我是守夜人的新手,想知道是否有任何好方法可以选择当前元素的内部元素然后获取文本?假设我有以下...并且我正在尝试检索每个(li)的标签内的文本。
所以我想得到'要检索的文字'和'要检索的文字2'。
...
<div class="mywrapperhere">
<ul>
<li>
<a>.....
<div>text to retrieve</div>
</a>
</li>
<li>
<a>.....
<div>text to retrieve 2</div>
</a>
</li>
<li>...
...
</div>
我正在考虑这些问题......
module.exports = {
'Demo test 1' : function (browser) {
....
//some sort of selector then gets from the anchor list
...'.mywrapperhere li a') : {
..
//for each element of the anchor..
{
//is there anyway to get it through something like
element.('div').innerHTML eg..
//or am i forced to use browser.execute( ...getElementsByTag method
//to achieve this?
}
}
browser.end();
}
};
看着守夜人api,我找不到任何可以让我这样做的东西。我特别关注“元素状态”示例,这些示例似乎没有办法让我选择当前元素状态的子元素:
http://nightwatchjs.org/api/elementIdAttribute.html
我必须遍历锚标记级别的原因是因为除了div标记之外我还需要检索更多数据,谢谢!
答案 0 :(得分:0)
您可以使用elementIdElement
和elementIdText
从子元素中获取文本。首先,您可以使用li
获取所有.elements()
元素。然后使用elementIdElement
来获取子元素。然后,您可以使用elementIdText
来获取此子元素的文本。下面是一个示例,它允许您获取代码段中两个列表项的文本,并将值记录到控制台。
browser.elements('css selector', 'li', function(listItems) {
listItems.value.forEach(function(listItem) {
browser.elementIdElement(listItem.ELEMENT, 'css selector', 'a', function(anchor) {
browser.elementIdText(anchor.ELEMENT, function(text) {
console.log(text.value);
});
});
}, browser); //have to pass in browser for scoping
});