gpt4 book ai didi

javascript - 如何使用 javascript 更改 javascript 文件中的 url 自动化测试

转载 作者:行者123 更新时间:2023-11-28 04:38:16 26 4
gpt4 key购买 nike

我正在尝试在自动化测试中修改 javascript 文件中的 URL。这样我就可以指出服务的 stub 版本。我用于测试的框架是Serenity-js(使用 Protractor )

在我的 HTML DOM 中,我有:

<script type="text/javascript" src="main.js"></script>

main.js

var DataService = (function () {
function DataService(http) {
this.http = http;
}
DataService.prototype.getStudentDetails = function (id) {
var parcel = this.http
.get('http://127.0.0.1/endpoint/' + id)
.map(function (res) {
return __WEBPACK_IMPORTED_MODULE_2__student_model__["a"].createStudent(res.json());
});
return student;
};
return DataService;
}());

我需要更改的部分是 127.0.0.1/endpoint

我知道我使用 $.document.write 冷更改了 HTML DOM或$().append但不知道如何更改/覆盖 DOM 元素。

最佳答案

这很简单,但是有很多方法可以做到!

  1. 作为运行测试之前设置阶段的一部分,您可以使用 sedawk 预处理 main.js 文件> 编写脚本并将所有出现的 127... 字符串替换为其他内容。
  2. 更改生产系统中的代码以从包含所有 url 端点的配置变量中读取。然后您可以在测试脚本中更改该对象。
  3. 使用您的测试脚本将函数替换为其他内容。这是 @alok 在注释中建议的,但是注释缺少 prototype,并且该方法也不应该被调用,因此代码应该如下所示:

#3 的示例:

 const newFnString = DataService.prototype.getStudentDetails.toString()
.replace("127.0.0.1", "something.com");
DataService.prototype.getStudentDetails = new Function(newFnString);

当然,您可以将 DataService.prototype.getStudentDetails 替换为任何给定的函数,因为您可以完全控制它(除非它隐藏在闭包中)。

附注试图通过让 JavaScript 更难被篡改来保护你的系统只是通过默默无闻来实现安全——这不是真实的。任何攻击者都可以读取网络请求,并在 curl 或 Postman 中重放它们。

关于javascript - 如何使用 javascript 更改 javascript 文件中的 url 自动化测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43999017/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com