protractor - 量角器自定义定位器:在生产中不可用,但在本地主机上工作得很好
问题描述
我在量角器中添加了一个自定义定位器,下面是代码
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 是部署应用程序的远程机器(虚拟机)。因此,简而言之,自定义定位器在本地主机上按预期工作,但在生产中失败。
解决方案
我能够找到解决此问题的方法,我data-
在 HTML 中为自定义属性使用了前缀。使用它我也可以在生产版本中找到该自定义属性。
data-
这是为任何自定义属性添加的 HTML5 原则。
除此之外,我犯的另一个错误是选择器的名称。在我的代码中,选择器名称为驼峰式(loginBtn),但在生产版本中,它被替换为 loginbtn(都是小写),这就是为什么我的自定义定位器无法在生产版本中找到它的原因。
推荐阅读
- java - 该系统找不到指定的路径。'-Xmx1000M' 不是内部或外部命令、可运行程序或批处理文件
- python - 如何在pyspark中进行矩阵乘法?
- c++ - 如何在计算答案到达变量之前停止循环?
- .net-core - 实体框架导航属性自定义命名
- node.js - Node.js server.listening 标志始终为 false
- java - 我的应用程序的命令行参数是什么?
- excel - Excel - 查找和替换字符
- angular - 在角度日期选择器中重置当前日期选择
- laravel - 在 laravel 的 hichart 中显示了图表的坐标页面但是数据没有显示为图表
- c# - 如何更改gridview中复选框的大小