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