gpt4 book ai didi

javascript - Protractor 是否适用于 Angular Material 对话框弹出窗口?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:42:31 24 4
gpt4 key购买 nike

我试图在 Protractor 的弹出对话框中定位元素,但是一旦弹出对话框出现,我就会收到以下错误:

Failed: unknown error: Element is not clickable at point (1204, 32). Other element would receive the click: ...

我是 Angular 和 Protractor 的新手,我已经搜索过是否有类似的问题。javascript:

it('should create a case and wait for the case page to load',  function(){
casePage.goToCasesPage();
var createCaseBtn = element(by.id("create-case-btn"));
createCaseBtn.click();
var stdCaseTypeBtn = element(by.css('[ng-click="vm.createCase($event, \'standard\')"]') );
expect(stdCaseTypeBtn);
stdCaseTypeBtn.click().then(function(){
browser.getAllWindowHandles().then(function(handles){
var popUpDialog = handles[1];
browser.switchTo().window(popUpDialog).then(function(){
var oeUtils = require('../common/utils');
console.log("switched");

//Fill the crud form and click create
var caseTitle = element(by.model('case.title'));
var caseDescription = element(by.model('case.description'));
var okDialogBtn = element(by.id('create-case-dlg-btn'));

var caseTxtTitle = oeUtils.generateRandomString(8);
caseTitle.sendKeys(caseTxtTitle);
caseDescription.sendKeys(oeUtils.generateRandomString(20));
okDialogBtn.click();

expect(element(by.binding('case["cm:title"]'))).getText().toEqual(caseTxtTitle);
})
});

});

})


html 模板(实际弹出窗口):

<md-dialog aria-label="Case edit dialog">
<form name="form">
<md-toolbar layout="row">
<div class="md-toolbar-tools">
<h2 ng-hide="editCase">{{ 'CASE.CREATE_CASE' | translate }}</h2>
<h2 ng-show="editCase">{{ 'CASE.EDIT_PROPERTIES' | translate }}</h2>
</div>
</md-toolbar>
<md-dialog-content style="max-width:800px;max-height:810px;min-width:20em;">

<md-input-container>
<label><span class="md-warn">*</span> {{ 'CASE.TITLE' | translate }}</label>
<input type="text" ng-model="case.title" required focus-me>
</md-input-container>

<md-input-container>
<label>{{ 'CASE.DESCRIPTION' | translate }}</label>
<textarea ng-model="case.description"></textarea>
</md-input-container>

</md-dialog-content>
<div class="md-actions" layout="row">
<md-button id="create-case-dlg-btn" type="submit" class="md-primary" ng-click="vm.update(case)" ng-disabled="form.$invalid">
{{ 'COMMON.OK' | translate }}
</md-button>
<md-button type="button" ng-click="vm.cancel(form)">
{{ 'COMMON.CANCEL' | translate }}
</md-button>
</div>
</form>
</md-dialog>

最佳答案

这可能对你有帮助。

考虑下面的例子md-dialog:

<md-dialog aria-label="Page Preference Dialog" class="page-pref-dialog confirmation-dialog">
<md-dialog-content class="dialog">`enter code here`
<div class="dialog-body bold confirmation-dialog-body">
<form name="confirmationForm">
<div>
<h4>{{'Admin_viewQuestionnaire_popup_confirm_inactive'|translate}}</h4>
</div>
</form>
</div>
<div class="dialog-footer">
<button type="button" id="admin_dialog_confirm_cancel" class="btn ink-reaction btn-primary" ng-click="cancelDialog()">{{"Admin_commonButton_button_cancel"| translate}}</button>
<button type="button" id="admin_dialog_confirm_deactivate_user" class="btn ink-reaction btn-primary" ng-click="closeDialog()">{{'Admin_user_btn_viewUser_Deactivate'|translate}}</button>
</div>
</md-dialog-content>
</md-dialog>

测试用例:

    it( "view user", function () {
browser.get( loginPageUrl );
element( by.model( 'pageData.loginData.userName' ) ).sendKeys( adminUsername );
browser.driver.sleep( 500 );
element( by.model( 'pageData.loginData.userPassword' ) ).sendKeys( adminPassword );
browser.driver.sleep( 500 );
element( by.id( 'login-btn' ) ).click();
browser.waitForAngular();
element( by.id( 'admin_dialog_confirm_deactivate_user' ) ).click();
console.log("success");
browser.driver.sleep( 1500 );
} );

关于javascript - Protractor 是否适用于 Angular Material 对话框弹出窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33017583/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com