一、下载浏览器Edge

下载 Microsoft Edge ,开启自动下载文件功能

二、搜索浏览器插件

 

三、安装插件katalon recorder

 

四、katalon recorder插件功能介绍

 

五、数据驱动

上传数据文件格式为csv,为两列数据英文命名,将自引用到控件中,格式如下:

先将文件上传到控件

引用文件到指定的测试用例中

将变量用在指定的地方,设置完成点击”add“

插件自动写入引用文件的脚本

六、使用script脚本

在command中使用runScript命令

target插入js代码

七、将文件导出

7.1下载测试套件

7.2导入krecorde后缀的测试套件

7.3将测试用例转换成其他代码

 

八、外卖店铺抓取文件

店铺信息脚本

九、js代码说明

  1 //get_shop_info.js
  2 
  3 // 声明一个全局变量来存储商家信息
  4 var allShopData = [];
  5 
  6 // 清空商家信息数据
  7 function clearAllShopData() {
  8     allShopData = [];
  9 }
 10 
 11 // 模拟页面上拉滚动效果
 12 function scrollPageUp() {
 13     var body = document.body;
 14     if (body) {
 15         window.scrollTo({
 16             top: body.scrollHeight, // 滚动到页面底部
 17             behavior: "smooth" // 使用平滑滚动效果
 18         });
 19     } else {
 20         console.error("Body element not found.");
 21     }
 22 }
 23 
 24 // 判断是否已经到达页面底部
 25 function isPageBottom() {
 26     console.log("判断是否已经到达页面底部");
 27     return (window.innerHeight + window.scrollY) >= document.body.offsetHeight;
 28 }
 29 
 30 // 判断是否存在 正在加载... 元素
 31 function isElement() {
 32     var element = document.querySelector("#sqt-openh5-poilistLoadMore .loading-img");
 33     if (!!element) {
 34         console.log("捕获到【正在加载】元素");
 35     } else {
 36         console.log("未捕获到【正在加载】元素");
 37     }
 38     return !!element;
 39 }
 40 
 41 // 获取所有商家的信息
 42 function getShopData() {
 43     // 在获取商家信息之前清空之前的数据
 44     clearAllShopData();
 45 
 46     var shopItems = document.querySelectorAll("#sqt-openh5-homepoilist .poilist-item");
 47     var shopData = [];
 48 
 49     shopItems.forEach(item => {
 50         // 获取商家名称
 51         var nameElement = item.querySelector(".poilist-item-info1name");
 52         var name = nameElement ? nameElement.textContent.trim() : "未找到商家名称";
 53 
 54         // 获取评分
 55         var scoreElement = item.querySelector(".poilist-item-info2 .score");
 56         var score = scoreElement ? scoreElement.textContent.trim() : "未找到评分";
 57 
 58         // 获取月售
 59         var salesElement = item.querySelector(".poilist-item-info2 .poi-info-txt:nth-child(2)");
 60         var sales = salesElement ? salesElement.textContent.trim() : "未找到月售";
 61 
 62         // 获取人均消费
 63         var avgElement = item.querySelector(".poilist-item-info2 .poi-info-txt:nth-child(3)");
 64         var avg = avgElement ? avgElement.textContent.trim() : "未找到人均消费";
 65 
 66         // 获取起送价
 67         var minOrderElement = item.querySelector(".poilist-item-info3 .poi-info-txt:nth-child(1)");
 68         var minOrder = minOrderElement ? minOrderElement.textContent.trim() : "未找到起送价";
 69 
 70         // 获取配送费
 71         var deliveryFeeElement = item.querySelector(".poilist-item-info3 .poi-info-txt:nth-child(2)");
 72         var deliveryFee = deliveryFeeElement ? deliveryFeeElement.textContent.trim() : "未找到配送费";
 73 
 74         // 将提取的数据存储在对象中,并添加到全局变量中
 75         allShopData.push({
 76             name,
 77             score,
 78             sales,
 79             avg,
 80             minOrder,
 81             deliveryFee
 82         });
 83     });
 84 
 85     // 存储数据到 Session Storage
 86     sessionStorage.setItem("shopData", JSON.stringify(allShopData));
 87     // 输出结果
 88     console.log(allShopData);
 89 }
 90 
 91 // 生成指定范围内的随机等待时间
 92 function getRandomWaitTime(min, max) {
 93     var time = Math.floor(Math.random() * (max - min + 1)) + min;
 94     console.log(time);
 95     return time;
 96 }
 97 
 98 // 文件下载函数
 99 function downloadFile(fileName) {
100     // 从 Session Storage 中获取数据
101     var shopData = JSON.parse(sessionStorage.getItem("shopData"));
102 
103     // 创建 Excel 文件并下载
104     var wb = XLSX.utils.book_new();
105     var wsData = shopData.map(shop => [shop.name, shop.score, shop.sales, shop.avg, shop.minOrder, shop.deliveryFee]);
106     wsData.unshift(["商家名称", "评分", "月售", "人均消费", "起送价", "配送费"]);
107     var ws = XLSX.utils.aoa_to_sheet(wsData);
108     XLSX.utils.book_append_sheet(wb, ws, "商家信息");
109     var fullFileName = "商家信息_" + fileName + ".xlsx";
110     XLSX.writeFile(wb, fullFileName, { cellStyles: true });
111 }
112 
113 // 组合使用:先下拉滚动,然后提取商家信息
114 function scrollAndFetch() {
115     var ellipsisValue = document.querySelector(".ellipsis_dSZz_q").textContent.trim();
116     var script = document.createElement("script");
117     script.src = "https://cdn.jsdelivr.net/npm/xlsx@0.18.0/dist/xlsx.full.min.js"; // 使用 CDN 加载
118     script.onload = function() {
119         scrollPageUp(); // 执行下拉滚动
120         setTimeout(function() {
121             getShopData(); // 等待一段时间后获取商家信息
122             setTimeout(function() {
123                 if (isElement() && !isPageBottom()) {
124                     scrollAndFetch(); // 如果未到达页面底部,继续滚动和获取商家信息
125                 }
126                else {
127                       downloadFile(ellipsisValue);
128                 }
129             }, getRandomWaitTime(6000, 15000)); // 等待5-10秒后再次判断是否到达页面底部
130         }, getRandomWaitTime(6000, 15000)); // 等待5-10秒后获取商家信息
131     };
132     document.body.appendChild(script);
133 }
134  
135  scrollAndFetch();

 

posted on 2025-01-02 14:26  Q同码  阅读(45)  评论(0)    收藏  举报