首页 > 解决方案 > 量角器自定义定位器:在生产中不可用,但在本地主机上工作得很好

问题描述

我在量角器中添加了一个自定义定位器,下面是代码

const customLocaterFunc = function (locater: string, parentElement?: Element, rootSelector?: any) {
  var using = parentElement || (rootSelector && document.querySelector(rootSelector)) || document;
  return using.querySelector("[custom-locater='" + locater + "']");
}

by.addLocator('customLocater', customLocaterFunc);

然后,我在protractor.conf.js文件中配置了它,onPrepare方法如下:

...
onPrepare() {
    require('./path-to-above-file/');
...
}
...

当我在 localhost 上运行我的测试时,使用browser.get('http://localhost:4200/login'),自定义定位器功能工作得非常好。但是当我使用 时browser.get('http://11.15.10.111/login'),相同的代码无法找到该元素。

请注意,测试运行,浏览器打开,提供用户输入,用户也成功登录,但未找到通过此自定义定位器引用的元素。

仅供参考,11.15.10.111 是部署应用程序的远程机器(虚拟机)。因此,简而言之,自定义定位器在本地主机上按预期工作,但在生产中失败。

标签: protractor

解决方案


我能够找到解决此问题的方法,我data-在 HTML 中为自定义属性使用了前缀。使用它我也可以在生产版本中找到该自定义属性。

data-这是为任何自定义属性添加的 HTML5 原则。

除此之外,我犯的另一个错误是选择器的名称。在我的代码中,选择器名称为驼峰式(loginBtn),但在生产版本中,它被替换为 loginbtn(都是小写),这就是为什么我的自定义定位器无法在生产版本中找到它的原因。


推荐阅读