色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

空手道UI中如何用條件邏輯重復(fù)定制功能

李中冰2年前8瀏覽0評論

我試圖編寫一個測試用例來驗證頁面上的上下文。

有幾個迭代,內(nèi)容為一個單一的網(wǎng)頁可以合并的解決方案從:如何使用scriptAll找到所有的& ltdiv & gt在空手道中帶有id或風(fēng)格屬性

這個場景還有一個問題——內(nèi)容被分割成了多個頁面。除非按回車鍵,否則沒有按鈕可以轉(zhuǎn)到下一頁。

此外,確定它是否已到達上下文末尾的唯一方法來自以下部分:

<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>

在進入最后一頁之前,它會發(fā)生如下變化:

<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>

我想知道是否有一種方法可以使用條件邏輯遍歷所有頁面,并將內(nèi)容(解決方案從每個頁面提取上下文)合并在一起進行斷言?

每頁的格式完全相同。

編輯:最終使其與js函數(shù)一起工作

* def allData = []
    * def loopContent =
    """
    function() {
    while (allData) {
        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

多謝

是的,它可能需要一些實驗,但請閱讀waitUntil()與函數(shù)的描述。

也許另一個答案會給你一些提示:https://stackoverflow.com/a/76268570/143475

編輯:根據(jù)更新的問題,你可以這樣做& quot收藏& quot循環(huán)中的所有數(shù)據(jù):

* def allData = []
* def loopContent =
"""
function() {
    if (!exists('.messageNumber')) {
        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());
        allData.push(data);
        return true;
    }
    input('body', Key.ENTER);
}
"""
* waitUntil(loopContent)
* print allData

這可能會復(fù)制前幾頁,但是我認為可以改進這個例程,只推送()新加載的行。這可能很棘手。

請注意,有一個幫助器函數(shù)可以對陣列進行重復(fù)數(shù)據(jù)消除:

* def cleaned = karate.distinct(allData)