我正在尝试自动化一个非常琐碎的场景,在这种情况下,我必须将文本放入li
元素的多个ul
子元素中,并将其与给定数组进行比较。我正在使用带有Cucumber JS的量角器,并使用async/await
来管理承诺。
我的方案HTML看起来像这样
<div class="some-class">
<ul class="some-ul-class">
<li>
<span>Heading1: </span>
<span class="some-span-class> Value of Heading 1</span>
</li>
<li>
<span>Heading2: </span>
<span class="some-span-class> Value of Heading 2</span>
</li>
<li>
<span>Heading3: </span>
<span class="some-span-class> Value of Heading 3</span>
</li>
<li>
<span>Heading4: </span>
<span class="some-span-class> Value of Heading 4</span>
</li>
<li>
<span>Heading5: </span>
<span class="some-span-class> Value of Heading 5</span>
</li>
我需要获取第一个span元素的值,即Heading1
,Heading2
文本。我在SO中看到了很多方法,但是都没有找到解决方案。大多数解决方案都没有实现async/await
,如果我尝试使用它们,代码将无法实现预期的目的。
我已提及的示例:Protractor Tests get Values of Table entries Protractor : Read Table contents
如果我尝试在map
块中使用async
函数,但是导致了ECONNREFUSED
错误,因此建议不要这样做here。
如果有人可以指导我找到解决这个问题的方法,将不胜感激。
答案 0 :(得分:0)
这应该为您工作:
const elements = $$('.some-span-class');
const expected = [];
const elementsLength = await elements.count();
for (let i = 0; i < elementsLength; i += 1){
const text = await elements.get(i).getText();
expected.push(text);
}
在处理async/await
时,应检查量角器方法api返回的内容,例如$$
返回ElementArrayFinder
且不需要等待,而getText
和{{ 1}}返回!webdriver.promise.Promise
,并首先要求count
语句。
答案 1 :(得分:0)
您可以缺少@Lunin Roman的答案:
const elements = $$('.some-span-class');
const textFromElements = elements.getText();
textFromElements
是string []的承诺。当您履行诺言时:
textFromElements.then((result) => {
console.log(result)
)})
您应该获得一系列结果。