如何在Karate UI中结合条件逻辑重复执行自定义函数
多页内容遍历与合并的测试用例实现
我正在编写测试用例验证页面内容,单页内容的提取方案已确定,但当前场景中内容被分割为多页,仅能通过按下Enter键翻页。判断是否到达内容末尾的唯一依据是特定区域的结构变化:
非末尾页结构
<div id="msgList" class="test"> <table> <tbody> <tr class="infoText"> <td class="Type">reminder</td> <td class="Text">99 more data to view</td> <td class="messageNumber">#12345</td> </tr> </tbody> </table> <div id="message" style="display:none;">reminder more data to view</div> </div>
末尾页结构(两种可能)
第一种:
<div id="msgList" class="test"> <table> <tbody> <tr> <td class="Type">23456</td> <td class="Text">enter your input</td> </tr> </tbody> </table> <div id="message" style="display:none;">23456 enter your input</div> </div>
第二种:
<div id="msgList" class="test"> <table> <tbody> <tr> <td class="Type">reminder</td> <td class="Text">66 no more data to view</td> <td class="messageNumber">#98765</td> </tr> </tbody> </table> <div id="message" style="display:none;">random text</div> </div>
请问能否通过条件逻辑遍历所有页面,合并各页提取的内容后进行断言?所有页面格式完全一致。
最终实现方案
通过JS函数实现了需求,代码如下(已修正原代码中的语法与逻辑问题):
* def allData = [] * def loopContent = """ function() { while (true) { let list = locateAll('form div', x => { let id = x.attribute('id'); return id ? id.startsWith('line1_R') : false }); let data = list.map(x => x.text.trim()); let msgText = script('.Text','_.textContent').trim(); if (msgText !== "reminder more data to view"){ allData.push(data); return allData; } else if(msgText === "reminder more data to view"){ allData.push(data); input('body', Key.ENTER); } else { karate.fail("Content not being looped properly"); } } } """ * def letterContent = loopContent() * print letterContent
内容的提问来源于stack exchange,提问作者Jackson
相关产品推荐
相关产品推荐

