如何一次获取所有段落(p)的值 例如下面是我的检查视图的样子
"测试样本一。""测试样本二。"
及以下是我的代码示例,用于提取id' run'
的值browser.findElement(by.css(' [ID =运行]&#39))。gettext的()
这只是提取第一个值,或者我可以修改并获得id的第二个值..我需要的是我需要同时获取两个值..在同一行代码中..你能不能指教
答案 0 :(得分:0)
虽然错过了一个html示例以及您想要提取的更多描述,但我会尝试一下。
一般情况下,您可以/应该使用element.all(by.css())
,而不是$$()
,而不是browser.findElements
,除非您确切知道,为什么使用findElements
。
Read some details about the difference here
然后正如评论中所提到的那样,有一个findElements()
(see API-Doc for findElements() here),返回符合条件的所有值的数组。只是您无法立即使用getText()
,因为您获得了一系列元素,而getText()
需要一个元素(see API-Doc for getText() here)。因此,您需要通过一些循环。
如果不了解足够的背景,可以选择一小部分想法。
var allP = new Array();
var allPString = null; //if one long string is desired
//here I'm using now element.all() instead of browser.findElements
var allPEl = $$('p#run'); //equal to element.all(by.css('p[id=run]')); //returns array of all found elements
var allPElBrowser = browser.findElements(by.id('run')); //returns array of all found elements
var i = allPEl.length();
var j = 0;
allPEl.each().getText().then(function(text){ //getAttribute('value') instead of getText(), if getText doesn't work.
allP.push(text); //add it to Array
allPString += text+' '; //add to String with a space at the end
j++; //counter
if(i === j-1){continueTest()}; //call continuation at the end of last loop, due to asynchronous nature of 'then()'.
});
continueTest = function(){
allP.toString() //in case of comma separated list from Array is desired
// here comes the rest of your test case logic
};
请注意,我假设您需要已解决的承诺,因此<p>
的内容将继续。
如果您可以继续使用<p>
- 对象数组,稍后您将在expect()
内解决所有问题$$('p#id');
。
如果解决方案对您不起作用,请告诉我,哪些部分仍然缺失或出现问题。