获取以下错误“WebDriverError:未知错误:a.tagName.toUpperCase不是函数”

时间:2018-02-08 05:57:47

标签: protractor

当我尝试在下面的输入字段中输入文本时,虽然它显示在窗口中,但我收到错误。下面给出了以下输入元素html代码。我无法理解错误的原因而无法找到解决方案“WebDriverError:未知错误:a.tagName.toUpperCase不是函数”

<input type="text" ng-model="$ctrl.tag.name" ng-if="$ctrl.isSelectedMode" autofocus="autofocus" ng-blur="$ctrl.saveTagName()" name="tagName" ng-keyup="$ctrl.escapeEditing($event)" form-validator="$ctrl.tagName.uniqueError.validator" class="ng-valid ng-valid-uniqueness ng-not-empty ng-dirty ng-valid-parse ng-touched" autocomplete="off" style="">

我在页面对象模型中编写了代码

 this.AddTag = function(tagname1,tagname2,tagname3){
           let clickAddTag = element(by.xpath("//*[text()='Add Tag']"));
           clickAddTag.click();
           browser.sleep(2000);
           let AddTag = element(by.xpath("//input[@name='tagName']"));
           if(AddTag.isPresent()){
           AddTag.sendKeys(tagname1);
           AddTag.sendKeys(protractor.Key.ENTER);
           clickAddTag.click();
           AddTag.sendKeys(tagname2);
           AddTag.sendKeys(protractor.Key.ENTER);
           clickAddTag.click();
           AddTag.sendKeys(tagname3);
           AddTag.sendKeys(protractor.Key.ENTER);
           }

在规格中我称之为方法 BidConfiguration.AddTag( 'TAG1', 'TAG2', 'TAG3');

2 个答案:

答案 0 :(得分:0)

这是因为你试图大写不是字符串而是HTML元素。

更像这样的东西:

element(by.xpath("//*[text()='Add Tag']")).toUpperCase();

您可能希望将元素的文本更改为大写。 尝试:

    element(by.xpath("//*[text()='Add Tag']")).getText().then((elementText) => {
        console.log(elementText.toUpperCase());
    });

答案 1 :(得分:0)

我找到了解决方案 使用带有sendKeys的动作类

browser.actions.click(element).sendKeys('text').perform();