javascript - 测试元素是否在量角器中被禁用
问题描述
我们有一些应在应用程序上禁用的复选框。下面是html片段:
<label _ngcontent-c17="">
<input _ngcontent-c17="" checked="" disabled="" type="checkbox" value="">
<span _ngcontent-c17="" class="ml-2"> Speech</span>
</label>
在应用程序上,我看到复选框已选中和禁用。
下面是我的代码片段,用于测试“语音”复选框是否被选中和禁用:
it(' Should validate the checked list on "Not Started" Page ', function () {
expect(EC.elementToBeSelected(G.Speech_Checkbox_on_Services)).toBeTruthy();
expect(G.Speech_Checkbox_on_Services.isEnabled()).toBeFalsy();
expect(G.Speech_Checkbox_on_Services.getAttribute('disabled')).toBeTruthy();
});
代码的最后两行应该检查复选框是否被禁用。但是,当我运行它时,两条线都失败了。我怎样才能解决这个问题?
Expected true to be falsy.
Expected null to be truthy.
日志:
Error: Failed expectation
at UserContext.<anonymous> (C:\ESY_testing-and-deployment\Non_Test_Speks\TestBed.js:57:57)
at C:\Users\Nasim Patwary\AppData\Roaming\npm\node_modules\protractor\node_modules\jasminewd2\index.js:112:25
at new ManagedPromise (C:\Users\Nasim Patwary\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:1077:7)
at ControlFlow.promise (C:\Users\Nasim Patwary\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2505:12)
at schedulerExecute (C:\Users\Nasim Patwary\AppData\Roaming\npm\node_modules\protractor\node_modules\jasminewd2\index.js:95:18)
at TaskQueue.execute_ (C:\Users\Nasim Patwary\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:3084:14)
at TaskQueue.executeNext_ (C:\Users\Nasim Patwary\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:3067:27)
at asyncRun (C:\Users\Nasim Patwary\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2974:25)
at C:\Users\Nasim Patwary\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:668:7
Error: Failed expectation
at UserContext.<anonymous> (C:\ESY_testing-and-deployment\Non_Test_Speks\TestBed.js:58:70)
at C:\Users\Nasim Patwary\AppData\Roaming\npm\node_modules\protractor\node_modules\jasminewd2\index.js:112:25
at new ManagedPromise (C:\Users\Nasim Patwary\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:1077:7)
at ControlFlow.promise (C:\Users\Nasim Patwary\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2505:12)
at schedulerExecute (C:\Users\Nasim Patwary\AppData\Roaming\npm\node_modules\protractor\node_modules\jasminewd2\index.js:95:18)
at TaskQueue.execute_ (C:\Users\Nasim Patwary\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:3084:14)
at TaskQueue.executeNext_ (C:\Users\Nasim Patwary\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:3067:27)
at asyncRun (C:\Users\Nasim Patwary\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2974:25)
at C:\Users\Nasim Patwary\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:668:7
解决方案
如果要检查复选框是否被选中和禁用
expect(G.Speech_Checkbox_on_Services.attr('checked')).toBeTruthy();
expect(G.Speech_Checkbox_on_Services.getAttribute('disabled')).toBe(true);
https://www.protractortest.org/#/api?view=webdriver.WebElement.prototype.isEnabled
希望这可以帮助。
推荐阅读
- swift - 当从一个视图控制器转到另一个视图控制器(如 Swift 中的 Instagram 或 Facebook)时,如何在表视图中保留当前的 IndexPath.row?
- rest - 什么是 REST API?
- c# - 无需在多个地方编辑代码即可扩展接口签名
- indexing - 为什么 DROP INDEX IF EXISTS 会生成 MySQL 注释
- c++ - 防止在 C++ 中输入字符数组中的双空格
- html - Justify-content:空格之间的作品不正确
- powershell - Powershell - 使用“Set-UnifiedGroup”更改更多组
- gfortran - gfortrans -ftree-pre 有什么作用?
- c# - 如何 LINQ 获取组中的最大对象?
- blockchain - 如何在同一运行时内多次重复使用 Substrate 托盘?