javascript - 从页面上的多个元素输出文本 - 量角器,Javascript
问题描述
我正在研究 Protractor 自动化框架。我想从页面上的多个元素输出文本值。
所有元素都有一个我想在 span 标签中输出的文本。所以,我为我做了这个助手:
static getAllSpansContainText (text: string) {
return this.getAllSpanByText(text, true);
}
我在这里使用上述方法:
static get jobStasuses(){
return CommonPage.getAllSpansContainText('ACCEPTED');
}
在我的测试课上,我使用这个:
console.log('Job Statuses: '+ffcPage.jobStasuses);
我希望这会打印出文本“接受”它在页面上出现的次数。但我得到:
Job Statuses: [object Object]
我是新手,所以如果这个问题看起来很傻,请承担这个问题。
解决方案
你需要解决承诺。element.all 返回一个承诺,这就是你得到 [object] 的原因。所以你需要使用.then(function(resolved_object));
,因为你有多个元素,你需要通过持有元素来循环它,如下面的代码所示。您将再次需要解决 currentElement.getText() 因为它也返回一个承诺。代码片段如下。希望能帮助到你
var elementBySpan = element.all(by.xpath('//span')); // returns a promise and not the array objects. you need to resolve it by using .then
elementBySpan.then(function(varEleBySpan){
for(i=0; i<varEleBySpan.length; i++){
(function(currentElement){
currentElement.getText().then(function(txtValue){
console.log("Job Statuses: " + txtValue) // this will display the text value of each span in the page
});
})(varEleBySpan[i]);
}
});
推荐阅读
- python-3.x - 在 Jupyter 中停止内核时进程会发生什么
- python - Auto-py-to-exe 自动运行 cscript.exe
- java - 无法在 Eclipse Java 中找出此错误
- android - 如何在动态功能模块中将 SavedStateHandle 注入 ViewModel?
- java - 使用 Pentaho 中的用户定义 Java 类将 pdf 加载到 S3
- android - 使用分页适配器的嵌套recyclerview(分页3)在滚动后显示错误的图像
- java - 如果我创建一个可以容纳 10 个对象的数组,该数组是否有可能少于 10 个对象?
- docker - 如何找到所有未命名的模块
- excel - 如何使用 InStr 和 Excel Search 搜索文本?
- css - 防止 vuetify 污染全局样式范围