javascript - 如何从量角器中的输入元素而不是承诺中获取文本值
问题描述
当我在 StackOverflow 中搜索时,我得到了多种解决方案来从输入元素中获取值。
我尝试了以下方法
方法一:
return serialNumberTextField.getAttribute('ng-model')
.then((text)=>{return serialNumberTextField.evaluate(text);})
.then((evalText) =>{ console.log("serial number in eval method :"+evalText);
return evalText;})
方法二:
return serialNumberTextField.getAttribute('value')
.then( (text) =>{
console.log("serial number in method :"+text);
return text;})
当以两种方法打印时,它会打印出确切的值,例如:-方法1:评估方法中的序列号:assetDF1534 方法2:方法中的序列号:assetDF1534
我在两个地方使用了返回值
第一名:'assetName'变量是从上述方法中获取序列号的。
assetNameTextField.clear().sendKeys(assetName);
第二个地方:
element(by.xpath("//a[contains(text(),'"+ assetName+"')]")).click();
首先,它运行良好并在资产名称文本字段中输入值“assetDF1534”,但是在使用资产名称创建 Web 元素时失败,因为它给出了“资产名称”作为承诺而不是价值。当我在那些显示为承诺的方法中打印“资产名称”时,如下所示:
在过滤器中输入的资产名称是 :ManagedPromise::2239 {[[PromiseStatus]]: "fulfilled"} 资产名称是 :ManagedPromise::2239 {[[PromiseStatus]]: "fulfilled"}
Sendkeys 处理承诺,因为它是量角器方法,但不是在另一种情况下。如何获得价值而不是承诺?
解决方案
您需要解决承诺而不是返回它。这应该有效。
function getSerialNumber() {
return new Promise((resolve, reject) => {
serialNumberTextField.getAttribute('value').then((text) => {
resolve(text);
})
.catch((err) => {
reject(err);
});
});
}
推荐阅读
- maven - 如何在 Maven 中引用依赖版本?
- linux - 如何在不退出 ssh 会话的情况下退出 IPMI SOL 会话?
- swift - iOS FCM 推送通知数据负载
- css - 如何在ckeditor中显示源代码中给出的内联样式的颜色?
- python - Python 请求 PUT
- android - 如何更改 Android 12 启动画面中的图标形状?
- postgresql - hyperledger-explorer 无法连接到 IBM Cloud 上已供应的 Postgres 实例
- jquery - jQuery 无法在 ajax 调用中更新 DOM
- python - 计算的布尔列显示列是否是最新的
- laravel-8 - laravel - Blade-ui-kit 中未定义 Pikaday