2017-02-14 28 views
1

我正在做一個自動化項目使用硒webdriver和C#。點擊動態複選框與同一類硒

現在我有一個挑戰要解決:我的系統是一個支付門票的系統,每個門票都是動態的頁面及其組件,支付需要點擊動態複選框(每張門票都有複選框) 。下面,有一些門票例如支付:

<form action="/PagamentoOnline/fix_3001837_conexaoCore/Pagamento/FormaPagamento" id="frmDebitos" method="post"><input data-val="true" data-val-required="The TipoPagamento field is required." id="TipoPagamento" name="TipoPagamento" type="hidden" value="0" /> <div class="row"> 
    <div class="col-md-6 txt-gray txt-right"><input data-val="true" data-val-required="The TipoSolicitacaoPagamento field is required." id="TipoSolicitacaoPagamento" name="TipoSolicitacaoPagamento" type="hidden" value="Pagamento" /></div> 
    <div class="col-md-3 txt-gray txt-right"> 
     <input id="DataPagamento" name="DataPagamento" type="hidden" value="2017-02-13"> 
     <span class="huge">13/02/2017</span> 
     <br /> 
     <span class="medium">Data de pagamento</span> 
    </div> 
    <div class="col-md-3 txt-gray txt-right"> 
     <span class="huge total-debitos-selecionados"></span> 
     <br /> 
     <span class="medium">Total de débitos</span> 
    </div> 
</div> 
<hr /> 
<div class="row"> 
     <div class="col-md-4 col-debito"> 
      <input class="chk-debitos-selecionados" id="DebitosSelecionados_0_" name="DebitosSelecionados[0]" type="checkbox" value="29133609" /><input name="DebitosSelecionados[0]" type="hidden" value="false" /> 
      <div class="panel panel-gray" 
       data-codigo-titulo="29133609" 
       data-valor-pagar="21.41" 
       data-valor-original="20" 
       data-data-vencimento="Venc.: 15/12/2016" 
       data-numero-parcela="1" 
       data-descricao-tipo-debito="Parcela" 
       data-sigla-periodo-letivo="2016/2"> 
       <div class="panel-heading"> 
        <div class="row"> 
         <div class="col-xs-12"> 
          <div class="medium pull-right"><i class="glyphicon glyphicon-unchecked"></i></div> 
          <div class="huge pull-left" data-bind="text: valor">R$ 21,41</div> 
         </div> 
        </div> 
        <div class="row"> 
         <div class="col-xs-12"> 
          <div class="pull-left">Valor Atualizado</div> 
          <div class="pull-right">1&#170; Parcela - 2016/2</div> 
         </div> 
        </div> 
       </div> 
       <div class="panel-footer"> 
        <span class="pull-left">D&#233;bito: R$ 20,00</span> 
        <span class="pull-right">Venc.: 15/12/2016</span> 
        <div class="clearfix"></div> 
       </div> 
      </div> 
     </div> 
     <div class="col-md-4 col-debito"> 
      <input class="chk-debitos-selecionados" id="DebitosSelecionados_1_" name="DebitosSelecionados[1]" type="checkbox" value="29608740" /><input name="DebitosSelecionados[1]" type="hidden" value="false" /> 
      <div class="panel panel-gray" 
       data-codigo-titulo="29608740" 
       data-valor-pagar="21.43" 
       data-valor-original="20.99" 
       data-data-vencimento="Venc.: 19/01/2017" 
       data-numero-parcela="1" 
       data-descricao-tipo-debito="Parcela" 
       data-sigla-periodo-letivo="2016/2"> 
       <div class="panel-heading"> 
        <div class="row"> 
         <div class="col-xs-12"> 
          <div class="medium pull-right"><i class="glyphicon glyphicon-unchecked"></i></div> 
          <div class="huge pull-left" data-bind="text: valor">R$ 21,43</div> 
         </div> 
        </div> 
        <div class="row"> 
         <div class="col-xs-12"> 
          <div class="pull-left">Valor Atualizado</div> 
          <div class="pull-right">1&#170; Parcela - 2016/2</div> 
         </div> 
        </div> 
       </div> 
       <div class="panel-footer"> 
        <span class="pull-left">D&#233;bito: R$ 20,99</span> 
        <span class="pull-right">Venc.: 19/01/2017</span> 
        <div class="clearfix"></div> 
       </div> 
      </div> 
     </div> 
     <div class="col-md-4 col-debito"> 
      <input class="chk-debitos-selecionados" id="DebitosSelecionados_2_" name="DebitosSelecionados[2]" type="checkbox" value="29675826" /><input name="DebitosSelecionados[2]" type="hidden" value="false" /> 
      <div class="panel panel-gray" 
       data-codigo-titulo="29675826" 
       data-valor-pagar="1210.42" 
       data-valor-original="1180.95" 
       data-data-vencimento="Venc.: 07/02/2017" 
       data-numero-parcela="2" 
       data-descricao-tipo-debito="Parcela" 
       data-sigla-periodo-letivo="2017/1"> 
       <div class="panel-heading"> 
        <div class="row"> 
         <div class="col-xs-12"> 
          <div class="medium pull-right"><i class="glyphicon glyphicon-unchecked"></i></div> 
          <div class="huge pull-left" data-bind="text: valor">R$ 1.210,42</div> 
         </div> 
        </div> 
        <div class="row"> 
         <div class="col-xs-12"> 
          <div class="pull-left">Valor Atualizado</div> 
          <div class="pull-right">2&#170; Parcela - 2017/1</div> 
         </div> 
        </div> 
       </div> 
       <div class="panel-footer"> 
        <span class="pull-left">D&#233;bito: R$ 1.180,95</span> 
        <span class="pull-right">Venc.: 07/02/2017</span> 
        <div class="clearfix"></div> 
       </div> 
      </div> 
     </div> 
</div> 
<hr /> 
<div class="row"> 
    <div class="col-md-7"></div> 
     <div class="col-md-2 top-right"> 
     </div> 
    <div class="col-md-1"></div> 
    <div class="col-md-2 top-right"> 
     <button id="PagamentoCredito" type="submit" class="btn btn-success">Pagar com cartão de credito</button> 
    </div> 
</div> 

每個格類:

<div class="col-md-4 col-debito"> 

是一票支付。 我需要選擇此門票之一,並選中該複選框

<i class="glyphicon glyphicon-unchecked"></i> 

我tryed使用foreach循環選擇票的especified複選框:

ticketToPay = "cod_ticket_to_pay"; 
ReadOnlyCollection<IWebElement> ticketsInSystem= driver.FindElements(By.XPath("//div[@class='panel panel-gray']")); 


foreach (IWebElement ticketInformation in ticketsInSystem) 
{ 
if (ticketInformation.GetAttribute("data-codigo-titulo").Equals(ticketToPay)) 
    { 
IWebElement checkBoxTicket = ticketInformation.FindElement(By.XPath("//*[@class='glyphicon glyphicon-unchecked']")); 
checkBoxTicket .Click(); 
} 
} 

但當元素的作用checkboxTicket單擊他的類型的第一個元素,而不是正確的票。任何人都知道如何解決此問題?

一票 - 一個複選框選擇票 - selectecd複選框,單擊。

+0

這有什麼線路問題'driver.FindElements(By.CssSelector( 「輸入[值= ' 」+ ticketToPay +「']」)),點擊()'...因爲這atttribute' data-codigo-titulo的值與複選框值屬性相同... –

回答

0

我不知道如何用c#來做到這一點。但是使用Java語言,你可以這樣做。

WebElement check1 = driver.findElement(By.xpath("//input[@value='29133609']")); 
WebElement check2 = driver.findElement(By.xpath("//input[@value='29608740']")); 
WebElement check3 = driver.findElement(By.xpath("//input[@value='29675826']")); 

int[] check_values = new int[] {29133609, 29608740, 29675826}; 

for(int i =0; i<check_values.length; i++) 
{ 
    WebElement check_source = driver.findElement(By.xpath("//input[@value='"+check_values[i]+"']")); 
    if(!check_source.isSelected()) 
    { 
     check_source.click(); 
     Thread.sleep(2500); 
    } 
}