簡體   English   中英

使用帶有 Ruby 的循環驗證 excel 板材線與應用線

[英]Validate excel sheet lines against application lines using loop with Ruby

朋友們,我會盡量詳細一點。 Thomas Walpole 它幫助我驗證了工作表每一行的信息是否對應於我的應用程序網格的每一行。 但是我想使用 for 來驗證它以使其更漂亮。 我將如何更改以下解決方案?

由於我不知道如何在這些條件下使用循環,我必須在我的工作表中逐項手動完成,並與前面的項目逐一驗證

我的電子表格配置如下: | 元素 | 狀態 | | Nº Hidrômetro |Invisível | | 萊圖拉 |Invisível | | Diâmetro do HD |Invisível | | 過濾器 |Invisível | | Padrão de instalação do HD |Invisível | | 遙測設備|Invisível |

Spreadsheet.client_encoding = 'UTF-8'
  book = Spreadsheet.open('c:/temp/gab.xls', "r")
  sheet = book.worksheet 0
  #get the first row referring to the second column
  take_hidrometro_planilha = sheet.rows[1][1]

  pp "O item da planilha N. hidrometro esta configurado para  #{take_hidrometro_planilha}"
  expect(page).to have_css("tr.tvRow:nth-child(2) .tvCell:nth-child(6) img[tooltip='#{take_hidrometro_planilha}']")
  #takes the tooltip on the front according to the desired line and saves it in a variable
  take_hidrometro_front = find("tr.tvRow:nth-child(2) .tvCell:nth-child(6) img[tooltip]")[:tooltip]
  pp "O item do Front N. hidrometro esta configurado para  #{take_hidrometro_front}"
  #validates the worksheet variable with the variable captured on the front
  pp expect(take_hidrometro_front).to eql(take_hidrometro_planilha)

###################HTML 代碼########################### #######

<div style="" class="tvContent">
    <div style="display:table;width:100%; background:inherit;">
        <div style="display:table-cell;">
            <table width="100%" class="tvGrid">
                <tbody>
                    <tr>
                        <th colspan="1" class="tvHeader">Nome</th>
                        <th colspan="1" class="tvHeader">Etiqueta</th>
                        <th colspan="1" class="tvHeader">Tipo Dado</th>
                        <th colspan="1" class="tvHeader">Valores </th>
                        <th colspan="1" width="1" class="tvHeader">Preenchimento automático</th>
                        <th colspan="1" class="tvHeader">Status </th>
                        <th colspan="1"></th>
                    </tr>
                    <tr oncontextmenu="if(!this.cancelEvent) {sendEvent(0,event,this,true,0,'TVXWFMTGINSTATOCE','1d13','BtnDropDownRow#',0,'','','');return false;} delete this.cancelEvent;" onclick="if(notSelecting()) sendEvent(0,event,this,true,0,'TVXWFMTGINSTATOCE','1d13','Select#',0,'','','');" onmousedown="if(event.ctrlKey) this.cancelEvent=true;" class="tvRow tvRowOdd tvRoll" style="cursor:pointer;">
                        <td valign="center" align="left" class="tvCell">FLAG_INSERIMENTO_LETTURA_E</td>
                        <td valign="center" align="left" class="tvCell"> Leitura Existente</td>
                        <td align="left" class="tvCell" valign="center" nowrap=""></td>
                        <td valign="center" align="left" class="tvCell"></td>
                        <td align="left" width="1" class="tvCell" valign="center" tooltip=""></td>
                        <td valign="center" align="center" class="tvCell"><img tooltip="Invisível" src="r/std/static/minus16.gif"></td>
                        <td align="center" width="30" style="line-height:1px;padding:0px;" class="tvCell" valign="center">
                            <div onclick="event.cancelBubble=true;sendEvent(0,event,this,searchImage(this),0,'','1d13','BtnDropDownRow#',0,'','','','');" class="but">
                                <div><img src="r/std/icons/menu64.png" class="icon" draggable="false" align="absmiddle"></div>
                            </div>
                        </td>
                    </tr>
                    <tr oncontextmenu="if(!this.cancelEvent) {sendEvent(0,event,this,true,0,'TVXWFMTGINSTATOCE','1d13','BtnDropDownRow#',1,'','','');return false;} delete this.cancelEvent;" onclick="if(notSelecting()) sendEvent(0,event,this,true,0,'TVXWFMTGINSTATOCE','1d13','Select#',1,'','','');" onmousedown="if(event.ctrlKey) this.cancelEvent=true;" class="tvRow tvRowEven tvRoll" style="cursor:pointer;">
                        <td valign="center" align="left" class="tvCell">XWFMSLETMATRICOLA_E</td>
                        <td valign="center" align="left" class="tvCell"> Nº Hidrômetro</td>
                        <td align="left" class="tvCell" valign="center" nowrap=""></td>
                        <td valign="center" align="left" class="tvCell"></td>
                        <td align="left" width="1" class="tvCell" valign="center" tooltip="[AIMPMATRICOLA]">
                            <button onclick="event.cancelBubble=true;sendEvent(0,event,this,searchImage(this),0,'','1d13','AUTOFILLBTN#',1,'','','','');" class="but butAct" tabindex="0" tooltip="Preenchimento automático ativado" type="BUTTON">
                                <div><img src="r/std/icons/checkboxselected64.png" class="icon" draggable="false" align="absmiddle"></div>
                            </button>
                        </td>
                        <td valign="center" align="center" class="tvCell"><img tooltip="Invisível" src="r/std/static/minus16.gif"></td>
                        <td align="center" width="30" style="line-height:1px;padding:0px;" class="tvCell" valign="center">
                            <div onclick="event.cancelBubble=true;sendEvent(0,event,this,searchImage(this),0,'','1d13','BtnDropDownRow#',1,'','','','');" class="but">
                                <div><img src="r/std/icons/menu64.png" class="icon" draggable="false" align="absmiddle"></div>
                            </div>
                        </td>
                    </tr>
                    <tr oncontextmenu="if(!this.cancelEvent) {sendEvent(0,event,this,true,0,'TVXWFMTGINSTATOCE','1d13','BtnDropDownRow#',2,'','','');return false;} delete this.cancelEvent;" onclick="if(notSelecting()) sendEvent(0,event,this,true,0,'TVXWFMTGINSTATOCE','1d13','Select#',2,'','','');" onmousedown="if(event.ctrlKey) this.cancelEvent=true;" class="tvRow tvRowOdd tvRoll" style="cursor:pointer;">
                        <td valign="center" align="left" class="tvCell">XWFMSLETLETTURA_E</td>
                        <td valign="center" align="left" class="tvCell"> Leitura</td>
                        <td align="left" class="tvCell" valign="center" nowrap=""></td>
                        <td valign="center" align="left" class="tvCell"></td>
                        <td align="left" width="1" class="tvCell" valign="center" tooltip=""></td>
                        <td valign="center" align="center" class="tvCell"><img tooltip="Invisível" src="r/std/static/minus16.gif"></td>
                        <td align="center" width="30" style="line-height:1px;padding:0px;" class="tvCell" valign="center">
                            <div onclick="event.cancelBubble=true;sendEvent(0,event,this,searchImage(this),0,'','1d13','BtnDropDownRow#',2,'','','','');" class="but">
                                <div><img src="r/std/icons/menu64.png" class="icon" draggable="false" align="absmiddle"></div>
                            </div>
                        </td>
                    </tr>
                    <tr oncontextmenu="if(!this.cancelEvent) {sendEvent(0,event,this,true,0,'TVXWFMTGINSTATOCE','1d13','BtnDropDownRow#',3,'','','');return false;} delete this.cancelEvent;" onclick="if(notSelecting()) sendEvent(0,event,this,true,0,'TVXWFMTGINSTATOCE','1d13','Select#',3,'','','');" onmousedown="if(event.ctrlKey) this.cancelEvent=true;" class="tvRow tvRowEven tvRoll" style="cursor:pointer;">
                        <td valign="center" align="left" class="tvCell">XWFMSLETID_XWFMTDCO_E</td>
                        <td valign="center" align="left" class="tvCell"> Diâmetro do HD</td>
                        <td align="left" class="tvCell" valign="center" nowrap=""></td>
                        <td valign="center" align="left" class="tvCell"></td>
                        <td align="left" width="1" class="tvCell" valign="center" tooltip="[XGABAIMPID_XWFMTDCO]">
                            <button onclick="event.cancelBubble=true;sendEvent(0,event,this,searchImage(this),0,'','1d13','AUTOFILLBTN#',3,'','','','');" class="but butAct" tabindex="0" tooltip="Preenchimento automático ativado" type="BUTTON">
                                <div><img src="r/std/icons/checkboxselected64.png" class="icon" draggable="false" align="absmiddle"></div>
                            </button>
                        </td>
                        <td valign="center" align="center" class="tvCell"><img tooltip="Invisível" src="r/std/static/minus16.gif"></td>
                        <td align="center" width="30" style="line-height:1px;padding:0px;" class="tvCell" valign="center">
                            <div onclick="event.cancelBubble=true;sendEvent(0,event,this,searchImage(this),0,'','1d13','BtnDropDownRow#',3,'','','','');" class="but">
                                <div><img src="r/std/icons/menu64.png" class="icon" draggable="false" align="absmiddle"></div>
                            </div>
                        </td>
                    </tr>
                    <tr oncontextmenu="if(!this.cancelEvent) {sendEvent(0,event,this,true,0,'TVXWFMTGINSTATOCE','1d13','BtnDropDownRow#',4,'','','');return false;} delete this.cancelEvent;" onclick="if(notSelecting()) sendEvent(0,event,this,true,0,'TVXWFMTGINSTATOCE','1d13','Select#',4,'','','');" onmousedown="if(event.ctrlKey) this.cancelEvent=true;" class="tvRow tvRowOdd tvRoll" style="cursor:pointer;">
                        <td valign="center" align="left" class="tvCell">XWFMSLETSIGILLO_E</td>
                        <td valign="center" align="left" class="tvCell"> Filtro</td>
                        <td align="left" class="tvCell" valign="center" nowrap=""></td>
                        <td valign="center" align="left" class="tvCell"></td>
                        <td align="left" width="1" class="tvCell" valign="center" tooltip="[XWFMAIMPSIGILLO]">
                            <button onclick="event.cancelBubble=true;sendEvent(0,event,this,searchImage(this),0,'','1d13','AUTOFILLBTN#',4,'','','','');" class="but butAct" tabindex="0" tooltip="Preenchimento automático ativado" type="BUTTON">
                                <div><img src="r/std/icons/checkboxselected64.png" class="icon" draggable="false" align="absmiddle"></div>
                            </button>
                        </td>
                        <td valign="center" align="center" class="tvCell"><img tooltip="Invisível" src="r/std/static/minus16.gif"></td>
                        <td align="center" width="30" style="line-height:1px;padding:0px;" class="tvCell" valign="center">
                            <div onclick="event.cancelBubble=true;sendEvent(0,event,this,searchImage(this),0,'','1d13','BtnDropDownRow#',4,'','','','');" class="but">
                                <div><img src="r/std/icons/menu64.png" class="icon" draggable="false" align="absmiddle"></div>
                            </div>
                        </td>
                    </tr>
                    <tr oncontextmenu="if(!this.cancelEvent) {sendEvent(0,event,this,true,0,'TVXWFMTGINSTATOCE','1d13','BtnDropDownRow#',5,'','','');return false;} delete this.cancelEvent;" onclick="if(notSelecting()) sendEvent(0,event,this,true,0,'TVXWFMTGINSTATOCE','1d13','Select#',5,'','','');" onmousedown="if(event.ctrlKey) this.cancelEvent=true;" class="tvRow tvRowEven tvRoll" style="cursor:pointer;">
                        <td valign="center" align="left" class="tvCell">XWFMSLETID_XWFMTUBI_E</td>
                        <td valign="center" align="left" class="tvCell"> Padrão de instalação do HD</td>
                        <td align="left" class="tvCell" valign="center" nowrap=""></td>
                        <td valign="center" align="left" class="tvCell"></td>
                        <td align="left" width="1" class="tvCell" valign="center" tooltip="[XWFMAIMPID_XWFMTUBI]">
                            <button onclick="event.cancelBubble=true;sendEvent(0,event,this,searchImage(this),0,'','1d13','AUTOFILLBTN#',5,'','','','');" class="but butAct" tabindex="0" tooltip="Preenchimento automático ativado" type="BUTTON">
                                <div><img src="r/std/icons/checkboxselected64.png" class="icon" draggable="false" align="absmiddle"></div>
                            </button>
                        </td>
                        <td valign="center" align="center" class="tvCell"><img tooltip="Invisível" src="r/std/static/minus16.gif"></td>
                        <td align="center" width="30" style="line-height:1px;padding:0px;" class="tvCell" valign="center">
                            <div onclick="event.cancelBubble=true;sendEvent(0,event,this,searchImage(this),0,'','1d13','BtnDropDownRow#',5,'','','','');" class="but">
                                <div><img src="r/std/icons/menu64.png" class="icon" draggable="false" align="absmiddle"></div>
                            </div>
                        </td>
                    </tr>
                    <tr oncontextmenu="if(!this.cancelEvent) {sendEvent(0,event,this,true,0,'TVXWFMTGINSTATOCE','1d13','BtnDropDownRow#',6,'','','');return false;} delete this.cancelEvent;" onclick="if(notSelecting()) sendEvent(0,event,this,true,0,'TVXWFMTGINSTATOCE','1d13','Select#',6,'','','');" onmousedown="if(event.ctrlKey) this.cancelEvent=true;" class="tvRow tvRowOdd tvRoll" style="cursor:pointer;">
                        <td valign="center" align="left" class="tvCell">XGABSLETTELCOUPEQUIP_E</td>
                        <td valign="center" align="left" class="tvCell"> Equipamento de telemetria acoplado</td>
                        <td align="left" class="tvCell" valign="center" nowrap=""></td>
                        <td valign="center" align="left" class="tvCell"></td>
                        <td align="left" width="1" class="tvCell" valign="center" tooltip="[XGABAIMPTELCOUPEQUIP]">
                            <button onclick="event.cancelBubble=true;sendEvent(0,event,this,searchImage(this),0,'','1d13','AUTOFILLBTN#',6,'','','','');" class="but butAct" tabindex="0" tooltip="Preenchimento automático ativado" type="BUTTON">
                                <div><img src="r/std/icons/checkboxselected64.png" class="icon" draggable="false" align="absmiddle"></div>
                            </button>
                        </td>
                        <td valign="center" align="center" class="tvCell"><img tooltip="Invisível" src="r/std/static/minus16.gif"></td>
                        <td align="center" width="30" style="line-height:1px;padding:0px;" class="tvCell" valign="center">
                            <div onclick="event.cancelBubble=true;sendEvent(0,event,this,searchImage(this),0,'','1d13','BtnDropDownRow#',6,'','','','');" class="but">
                                <div><img src="r/std/icons/menu64.png" class="icon" draggable="false" align="absmiddle"></div>

在此處輸入圖像描述

假設您使用的是“電子表格”gem - 該指南提供了您在此處查看如何使用循環所需的所有信息 - https://github.com/zdavatz/spreadsheet/blob/master/GUIDE.md

sheet.each 1 do |row|
  expected_tooltip = row[1]
  expect(page).to have_css("tr.tvRow:nth-child .tvCell:nth-child(6) img[tooltip='#{expected_tooltip}']")
end

這就是驗證電子表格中的所有工具提示文本是否存在於頁面上所需要做的一切。

如果您需要驗證它們是否按特定順序(為什么?),那么您可能需要類似的東西

xls_offset = 1
row_offset = 2
sheet.each_with_index(xls_offset) do |row, idx|
  expected_tooltip = row[1]
  expect(page).to have_css("tr.tvRow:nth-child(#{row_offset+idx}) .tvCell:nth-child(6) img[tooltip='#{expected_tooltip}']")
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM