当前位置: 首页 > Web前端 > HTML5

单步调试找到cy.visit的源码(二)——WebSocket-

时间:2023-04-05 21:24:53 HTML5

系列一:一步步调试找到cy.visit的源码(一)——找到BlueBird我们的目标是找到cy.visit是如何向目标网站发起请求:来到这一行:returnthis.emit('backend:request',eventName,...args,fn);单步调试:Observer发布者也有同感讨论,根据event找到监听者:这个ws是不是表示WebSocket?这里导入了这个全局对象:_packages_socket__WEBPACK_IMPORTED_MODULE_4__首先我们要找到这个browser.ts在本地哪里,然后才能知道是什么?我在本地搜索,但找不到这个文件。单步调试:第九行if语句无法进入:然后执行这个index.js文件:注意这些嵌套的Webpack_require调用:parseuri:但是在本地的node_modules文件夹中,并没有叫parseuri的文件夹。相反,这个../../node_modules/parseuri/index.js直接出现在cypress_runner.js源文件中:cypress_runner.js中出现的这些browser.ts应该是从某处复制过来的。这里又涉及到一个问题,这个cypress_runner.js的生成逻辑和时序?项目文件夹中没有名为socket的文件夹。最后发现是使用浏览器原生WebSocket的send方法向目标网站发送请求:遗留问题:cypress_runner.js这个文件是从哪里来的?使用WebSocket的好处?我们无法回答第一个问题,因为我们仍然不知道在使用命令行yarncypress:open之后,幕后发生了什么。第三个有趣的问题来了:我们在package.json中为cypress:open指定的命令行是cypressopen,但是在命令行窗口直接使用cypressopen是启动不了的:但是为什么用yarncypress:open就可以呢?在node_modules文件夹下.bin文件夹下的cypress.cmd中添加一行打印语句:windows系统下其他名字对命令行运行没有影响:但是把cypress.cmd改成其他名字,比如cypress.cmd22,运行命令行会报错。进一步说明node_modules\.bin\cypress.cmd是windows下cypressopen命令的入口。至此我们已经介绍了第四个问题:node_modules根目录下的.bin和node_modules/cypress/bin这两个bin文件夹有什么联系?