javascript - 使用 nightwatchjs 定位并检查脚本(在网页内)是否正确
问题描述
我使用 nightwatchjs 作为我的测试工具,我需要测试注入的脚本是否正确显示在页面上,并且脚本是否正确填充。
因此,要测试以下脚本 html(以确保正确显示):
<script type="text/javascript">
(function() {
window.dm = window.dm ||{ AjaxData:[]};
window.dm.AjaxEvent = function(et, d, ssid, ad) {
dm.AjaxData.push({ et:et, d:d, ssid:ssid, ad:ad});
window.DotMetricsObj && DotMetricsObj.onAjaxDataUpdate();
};
var d = document, h = d.getElementsByTagName('head')[0], s = d.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src='https://uk-script.dotmetrics.net/door.js?id=11373';
h.appendChild(s);
} ());
</script>
因此,首先,我想测试该脚本是否存在于页面上,但以一种尽可能不那么脆弱的方式。我可以测试/html/head/script[13]/text()但这真的很脆弱而且远非理想。
脚本本身有什么我可以参考的东西,所以测试不会那么脆弱吗?
其次,我要确保脚本细节是正确的。例如,这可以是一个检查脚本的https://uk-script.dotmetrics.net部分是否存在的测试。
但是,我尝试使用我通常的 css 和 xpath 方法来定位脚本的这一部分,但没有运气。
任何帮助,将不胜感激。谢谢。
解决方案
根据“断言什么,而不是如何”的范式,这里的“什么”似乎是确保脚本被注入到页面中。您可以使用像这样的选择器:script[src^="https://uk-script.dotmetrics.net/"]
,与 Nightwatch 的element
功能结合使用。您可以添加更多选择器来断言脚本具有预期的属性,例如type
和async
。
通过这种方式,您可以跳过实现细节(注入脚本的存在)并专注于我认为您真正关心的事情(将具有正确 URL 的脚本注入页面)。
推荐阅读
- asp.net-core - 在 .NetCore 3.0 中配置 ApiVersionDescriptions 而不在启动时使用构建服务提供程序
- string - 将 UUID 转换为字符串以便在 mongodb 中插入
- excel - 如何根据列中的条件执行 sumif 公式
- java - 无法从外部库导入 MediaPlayer
- android - 设备所有者的静默 APK 安装在 MIUI 11 上不起作用
- amazon-web-services - Terraform - 所需字符串列表(AWS 中的 cidr_blocks)
- scala - 为什么此代码编译并在执行时给出运行时错误
- c - 在 C 中使用 printf 或 printstring 格式化文本
- java - 来自 Firebase 的纬度和经度坐标不正确,并且所有帖子都相同
- javascript - Vuejs根据第一个下拉菜单中的首选渲染选择下拉菜单