量角器,失败:未知错误:无法将元素集中在自定义输入字段上

the*_*sle 2 javascript jquery angularjs protractor

跳上测试车,现在正在实施一些网站的E2E测试,但我遇到了一个棘手的小问题.

我正在尝试选择一个字段,然后将密钥发送到该输入字段以更改值,唯一的问题是失败:未知错误:无法聚焦元素错误我似乎无法过去.我有它在其他领域工作,只是没有这个设置.

pageObject文件.

var profilePage = function() {

this.firstName = element(by.id('firstname')); 
this.lastName = element(by.id('lastname'));
this.saveBtn = element(by.css('ng-click="saveLocalAccount()"'));
this.cancelBtn = element(by.css('ng-click="cancelChanges()"'));

this.changeName = function(firstname, lastname) {

    this.firstName.click();

    var input = firstName.element(by.css('input'));
    input.click();
    this.input.sendKeys(firstname);

    this.lastName.click();
    this.lastName.sendKeys(lastname);
    browser.waitForAngular();
}
};

module.exports = new profilePage();
Run Code Online (Sandbox Code Playgroud)

规范.

var profilePage = require('TestProtractor/E2E/PageObjects/profile.pageObject.js');

describe('Testing the profile page functionality', function() {

var firstNameTest = "firstTest";
var lastNameTest = "lastTest";

it('Navigate to profile page.' ,function() {
    browser.get('xxx');

    expect(browser.getCurrentUrl())
        .toContain('xxx');
}); 

it('Should change the firstname and lastname successfully', function() {
    profilePage.changeName(firstNameTest, lastNameTest);
    expect(element(by.id('firstname')).getText()).toContain(firstNameTest);     
    expect(element(by.id('lastname')).getText()).toContain(firstNameTest);
});
Run Code Online (Sandbox Code Playgroud)

});

HTML

在此输入图像描述

Adi*_*ddy 7

Failed: unknown error: cannot focus element error当你试图sendKeys()找到一个不是的元素时,你会看到input

在您可重复使用的方法中,changeName()您正在尝试sendKeys()进入lastName = element(by.id('lastname'))哪个不是input元素.您必须以与输入名字文字相同的方式接近它

假设他们也是一个input内部姓氏

this.changeName = function(firstname, lastname) {

    this.firstName.click();

    var input = firstName.element(by.css('input'));
    input.click();
    this.input.sendKeys(firstname);

    this.lastName.click();
    var input2 = lastName.element(by.css('input'));
    input2.click();
    this.input2.sendKeys(lastName);
}
};
Run Code Online (Sandbox Code Playgroud)