0

基本上下面是我的代码,我尝试验证 excel 表中的每个元素是否存在于网页中(数据在网页中以表格格式显示)。如果它不存在,则单元格将被着色为红色,否则为绿色。此代码需要很长时间才能执行,因为对于 excel 表中的每个数据,都会尝试读取表中的每个值。有10行和列,需要2个多小时才能执行

    require 'rubyXL'
    require 'roo'
    workbook = Roo::Spreadsheet.open(file_name)
    workbook1 = RubyXL::Parser.parse(file_name)
    workbook.default_sheet='Sheet4'
    worksheet1 = workbook1['Sheet4']
    choose("lookupSearch", :option => "Contract")
    sleep 5
    for j in workbook.first_row..workbook.last_row
    d=j
      for k in workbook.first_column..workbook.last_column
           if (k==workbook.first_column && workbook.cell(j,k)!='nil')
           fill_in "searchInput", :with => workbook.cell(j,k)
           find(:xpath, '//*[@id="searchicon"]').click
           sleep 5
           elsif(workbook.cell(j,k)=='/')
           puts" "
           elsif(k==workbook.last_column)   
           puts""
           elsif()
           elsif(workbook.cell(j,k)=='nil')
             k=k+1
             findXpath=page.find('th,td', text: workbook.cell(j,k), :match => :prefer_exact).path
             print findXpath
             splitXpath=(findXpath.split("/"))
             count1=splitXpath.count
             value=splitXpath.at(count1-1)
                 if(value=="th[1]")
                   finalElementXpath= findXpath.sub("th[1]","th[2]")
                 elsif(value=="th[2]")           
                   finalElementXpath= findXpath.sub("th[2]","th[3]")
                 elsif(value=="th[3]")           
                   finalElementXpath= findXpath.sub("th[3]","th[4]")
                 elsif(value=="th[4]")           
                   finalElementXpath= findXpath.sub("th[4]","th[5]")
                 elsif(value=="th[5]")           
                   finalElementXpath= findXpath.sub("th[5]","th[6]")
                 elsif(value=="td[1]")
                   finalElementXpath= findXpath.sub("td[1]","td[2]")
                 elsif(value=="td[2]")           
                   finalElementXpath= findXpath.sub("td[2]","td[3]")
                 elsif(value=="td[3]")           
                   finalElementXpath= findXpath.sub("td[3]","td[4]")
                 elsif(value=="td[4]")           
                   finalElementXpath= findXpath.sub("td[4]","td[5]")
                 elsif(value=="td[5]")           
                   finalElementXpath= findXpath.sub("td[5]","td[6]")
                 end

          if (workbook.cell(j,k+1) == (find(:xpath, finalElementXpath).native.text)) 
             #worksheet1.sheet_data[j-1][k-1].change_fill ('008000')
             #worksheet1.sheet_data[j-1][k].change_fill ('008000')
             #worksheet1.sheet_data[j-1][k-1].change_fill ('008000')
             #worksheet1.sheet_data[j-1][k].change_fill ('008000')
             print "---#{workbook.cell(j,k+1)}--value  --- exist--------for  #{workbook.cell(j,k)}  ------------ \n"
          else
             print "-----object #{workbook.cell(j,k+1)} -- does not exist---for  #{workbook.cell(j,k)} --------- \n"
             #worksheet1.sheet_data[j-1][k].change_fill ('ff0000')
             #worksheet1.sheet_data[j-1][k-1].change_fill ('ff0000')
          end

else

        findXpath=page.find('th,td', text: workbook.cell(j,k), :match => :prefer_exact).path
        splitXpath=(findXpath.split("/"))
        count=splitXpath.count
        value=splitXpath.at(count-1)
        if(value=="th[1]")
                   finalElementXpath= findXpath.sub("th[1]","th[2]")
                 elsif(value=="th[2]")           
                   finalElementXpath= findXpath.sub("th[2]","th[3]")
                 elsif(value=="th[3]")           
                   finalElementXpath= findXpath.sub("th[3]","th[4]")
                 elsif(value=="th[4]")           
                   finalElementXpath= findXpath.sub("th[4]","th[5]")
                 elsif(value=="th[5]")           
                   finalElementXpath= findXpath.sub("th[5]","th[6]")
                 elsif(value=="td[1]")
                   finalElementXpath= findXpath.sub("td[1]","td[2]")
                 elsif(value=="td[2]")           
                   finalElementXpath= findXpath.sub("td[2]","td[3]")
                 elsif(value=="td[3]")           
                   finalElementXpath= findXpath.sub("td[3]","td[4]")
                 elsif(value=="td[4]")           
                   finalElementXpath= findXpath.sub("td[4]","td[5]")
                 elsif(value=="td[5]")           
                   finalElementXpath= findXpath.sub("td[5]","td[6]")
                 end


if (workbook.cell(j,k+1) == (find(:xpath, finalElementXpath).native.text))
     worksheet1.sheet_data[j-1][k-1].change_fill ('008000')
     worksheet1.sheet_data[j-1][k].change_fill ('008000')
     print "---#{workbook.cell(j,k+1)}--value  --- exist--------for  #{workbook.cell(j,k)}  ------------ \n"
else
     worksheet1.sheet_data[j-1][k-1].change_fill ('ff0000')
     worksheet1.sheet_data[j-1][k].change_fill ('ff0000')
     print "-----object #{workbook.cell(j,k+1)} -- does not exist---for  #{workbook.cell(j,k)} --------- \n"
end
end
end
end
 workbook1.write(file_name) 
4

0 回答 0