javascript isPresent всегда возвращает TRUE (транспортир) - PullRequest
0 голосов
/ 15 мая 2018

Итак, я получаю доступ к приложению.Есть multiple employee records.Однако дублирующих записей нет.Я удаляю запись сотрудника, а затем пытаюсь убедиться, что запись сотрудника действительно удалена.Я пытаюсь найти имя сотрудника, используя xpath и используя функцию isPresent.Проблема в том, что хотя запись сотрудника удалена, вывод всегда возвращает

Employee present: true

Вот фрагмент кода, который я использую:

it('Delete Employee', function() {
        login_page.enterUsername(browser.params.username);
        login_page.enterPassword(browser.params.password);
        var employeelist_page = login_page.clickLoginButton();
        var greetings = employeelist_page.greetingText();
        expect(greetings).toContain('Hello');
        var empName = employeelist_page.getEmployeeName(Master Shifu);
        empName.getText().then(function(text) {
            console.log('Empoyee record to be deleted, found: ' + text);
        });
        employeelist_page.getEmployee(Master Shifu).click();
        //element(by.id('bDelete')).click();
        employeelist_page.clickDeleteButton();
        //browser.switchTo().alert().accept();
        var EC = protractor.ExpectedConditions;
        browser.wait(EC.alertIsPresent(), 5000, "Alert is not getting present :(")
                browser.switchTo().alert().accept().then(function(){
                    var employeelist_page1 = require('../page/employeelist_page.js');
                    employeelist_page1.getEmployee(Master Shifu).isPresent().then(function(isPresent){
                        if(isPresent){
                            console.log('Employee present: true');
                        } else {
                            console.log('Employee present: false');
                        }
                    });
                });

    });

Вот пример HTML-кодасписок сотрудников:

<ul id="employee-list">
<li class="ng-scope ng-binding" ng-class="employee.id == selectedEmployee.id && 'active'" ng-dblclick="editEmployee()" ng-click="selectEmployee(employee)" ng-repeat="employee in employees"> Tianna2 Jenkins </li>
<li class="ng-scope ng-binding" ng-class="employee.id == selectedEmployee.id && 'active'" ng-dblclick="editEmployee()" ng-click="selectEmployee(employee)" ng-repeat="employee in employees"> Anjali McClure </li>
<li class="ng-scope ng-binding" ng-class="employee.id == selectedEmployee.id && 'active'" ng-dblclick="editEmployee()" ng-click="selectEmployee(employee)" ng-repeat="employee in employees"> John Snow </li>
<li class="ng-scope ng-binding" ng-class="employee.id == selectedEmployee.id && 'active'" ng-dblclick="editEmployee()" ng-click="selectEmployee(employee)" ng-repeat="employee in employees"> Cole Prohaska </li>
<li class="ng-scope ng-binding" ng-class="employee.id == selectedEmployee.id && 'active'" ng-dblclick="editEmployee()" ng-click="selectEmployee(employee)" ng-repeat="employee in employees"> Annetta Hessel </li>

Вот результат:

*Empoyee record to be deleted, found: Master Shifu

Работник присутствует: true

1 Ответ

0 голосов
/ 16 мая 2018

Попробуйте скрипт, как показано ниже. Причина, по которой я добавил функцию .then, заключается в том, что сценарий в блоке then будет выполняться после завершения действия clickdeleteButton. Ваш сценарий проверки наличия элемента после удаления может выполняться до его удаления.

employeelist_page.clickDeleteButton().then(function() {
        //browser.switchTo().alert().accept();
        var EC = protractor.ExpectedConditions;
        browser.wait(EC.alertIsPresent(), 5000, "Alert is not getting present :(")
                browser.switchTo().alert().accept().then(function(){
                    var employeelist_page1 = require('../page/employeelist_page.js');
                    employeelist_page1.getEmployee(Master Shifu).isPresent().then(function(isPresent){
                        if(isPresent){
                            console.log('Employee present: true');
                        } else {
                            console.log('Employee present: false');
                        }
                    });
                });
})
...