【问题标题】:No element found using locator: by.model() error使用定位器找不到元素:by.model() 错误
【发布时间】:2014-05-21 21:32:19
【问题描述】:

我正在为我的应用程序使用量角器编写端到端测试。我看到了表单错误:

No element found using locator: By.model("address.fullName") error. 

引发此错误的相应量角器代码是:

var angularElement = element(By.model("address.fullName"));
angularElement.sendKeys("test");

但是我可以使用以下方法获取此元素:

var angularElement = element(By.xpath('//input[@ng-model="address.fullName"]'));

HTML sn-p:

input ng-model="address.fullName" type="text" class="control-input ng-pristine ng-invalid ng-invalid-required" size="40" name="fullName" ng-class= "{ 'required-field': isInformationSubmitted }" required=""

我不确定为什么会这样。有什么想法吗?

【问题讨论】:

  • 你能放一个sn-p的视图吗? HTML 是什么样子的?
  • 在内部,我认为By.model 定位器依赖于应用了ng-binding 类的元素。这个类应该由 angular 自动应用,但我见过它没有发生的实例 (example)。检查您要查找的元素是否具有 ng-binding 类。如果不是...我建议将其放入您自己,而是简单地切换到不同的定位器(xpath 或 css),直到 angular 的基本问题得到解决。

标签: protractor


【解决方案1】:

我遇到了一些关闭错误,我的错误是因为该项目未显示在页面上或量角器未完成更新其模型,因此在使用变量 i 之前:
-最大化页面:如果元素不可见 browser.manage().window().maximize();
-打开该项目所在的列表:
-等待量角器完成模型更新:

var ptor = protractor.getInstance();
ptor.waitForAngular();

【讨论】:

猜你喜欢
  • 2014-01-27
  • 2018-12-08
  • 2016-01-04
  • 2021-03-02
  • 1970-01-01
  • 1970-01-01
  • 2018-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多