当我尝试在下面的输入字段中输入文本时,虽然它显示在窗口中,但我收到错误。下面给出了以下输入元素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');
答案 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();