2017-02-14 2 views
1

Я делаю проект автоматизации с использованием selenium webdriver и C#.Нажмите на динамический флажок с тем же классом selenium

Теперь у меня есть задача решить: моя система - это система для оплаты билетов, и каждый билет динамичен на странице с его компонентами, чтобы заплатить, нужно щелкнуть в динамическом флажке (у каждого билета есть флажок) , Ниже есть пример с некоторых билетов для оплаты:

<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 класс:

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

это билет платить. нужно выбрать один из этих билетов и установите флажок

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

I судимым использовать цикл Еогеаспа выбрать 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' совпадает с атрибутом value checkbox ... –

ответ

0

Я понятия не имею, как это сделать с помощью C#. Но с помощью Java Language вы можете сделать это.

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); 
    } 
} 
Смежные вопросы