【问题标题】:Protractor Custom Locator: Not available in production, but working absolutely fine on localhost量角器自定义定位器:在生产中不可用,但在本地主机上工作得很好
【发布时间】:2020-10-20 19:43:58
【问题描述】:

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

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/');
...
}
...

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

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

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

【问题讨论】:

    标签: protractor


    【解决方案1】:

    不是答案,而是您需要考虑的问题。

    我记得添加了这个自定义定位器,遇到了一些问题,意识到它只是一个属性名......没什么花哨的,所以我认为它实际上写起来要快得多

    let elem = $('[custom-locator="locator"]')
    

    相当于

    let elem = element(by.css('[custom-locator="locator"]'))
    

    比

    let elem = element(by.customLocator('locator'))
    

    我放弃了这个想法。所以也许你也想走这条路

    【讨论】:

    • 感谢您的建议,但我认为您没有完全解决我的问题。只有当我在 DOM 中有此自定义属性可用时,我才能使用您的方法,在我的情况下,它不会在生产中呈现。但我看到在 localhost 的元素中添加了这个属性。
    • aah.. 但这不是量角器的问题,而是应用程序的问题
    • 我已经发布了一个解决方案,但您的建议确实派上了用场,因为自定义量角器定位器无法找到该元素。谢谢,我已经投票了。
    • Sergey Pleshakiv,只是一个小更新,我可以使用我的自定义定位器而无需这种方法。我正在做的错误是选择器的名称。在我的代码中,选择器名称为驼峰式(loginBtn),但在生产版本中,它被替换为 loginbtn(都是小写),这就是为什么我的自定义定位器无法在生产版本中找到它的原因。无论如何感谢您的帮助。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-01
      • 2019-07-03
      • 1970-01-01
      • 2011-10-07
      • 1970-01-01
      • 2018-06-23
      • 1970-01-01
      相关资源
      最近更新 更多