Search code examples
phpxpathyii2codeceptionacceptance-testing

Checking a checkbox that don't have any attribute


I'm trying to check an checkbox but it doesn't have any attributes on it to identify. I've tried to use xpath, but without success.

Bellow you can see the whole HTML code where the checkbox was inserted.

<fieldset>
  <div class="row">
    <div class="col-sm-3">
      <div class="form-group field-documento-competencia_mensal required has-success">
        <input name="Documento[competencia_mensal]" value="0" type="hidden">
        <label>
          <input id="documento-competencia_mensal" name="Documento[competencia_mensal]" value="1" type="checkbox"> Por competência mensal
        </label>
        <div class="help-block"></div>
      </div>
    </div>
    <div class="col-sm-4">
      <div style="display: none;" class="form-group field-documento-inicio_cobranca">
        <label class="control-label" for="documento-inicio_cobranca">Dia de início da cobrança</label>
        <input id="documento-inicio_cobranca" class="form-control" name="Documento[inicio_cobranca]" type="text">
        <div class="hint-block">Dia do mês seguinte em que o documento começa a ser solicitado. Pode ser negativo para indicar o próprio mês.</div>
        <div class="help-block"></div>
      </div>
    </div>
    <div class="col-sm-4">
      <div style="display: none;" class="form-group field-documento-limite_entrega">
        <label class="control-label" for="documento-limite_entrega">Dia limite para entrega do documento</label>
        <input id="documento-limite_entrega" class="form-control" name="Documento[limite_entrega]" type="text">
        <div class="hint-block">Dia do mês seguinte em que o documento passa a ser considerado pendente caso não seja entregue.</div>
        <div class="help-block"></div>
      </div>
    </div>
  </div>
  <div class="form-group field-documento-id_validade">
    <div class="row">
      <div class="col-sm-3">
        <label class="control-label" for="documento-id_validade">
          <!-- Here's the checkbox I'm trying to check -->
          <input type="checkbox"> Por Temporalidade
          <!-- Here's the checkbox I'm trying to check -->
        </label>
      </div>
      <div class="col-sm-4">
        <select style="display: none;" id="documento-id_validade" class="form-control" name="Documento[id_validade]">
          <option value="">Selecione a temporalidade</option>
          <option value="1">INDETERMINADO</option>
          <option value="2">MENSAL</option>
          <option value="3">ANUAL</option>
        </select>
      </div>
    </div>
    <div class="help-block"></div>
  </div>            
  <div class="form-group field-documento-exige_data_vencimento required">
    <input name="Documento[exige_data_vencimento]" value="0" type="hidden">
    <label>
      <input id="documento-exige_data_vencimento" name="Documento[exige_data_vencimento]" value="1" type="checkbox"> Por data de Vencimento
    </label>
    <div class="help-block"></div>
  </div>
</fieldset>

I tryed to use without success:

$I->selectOption('//div[@class="field-documento-id_validade"]/div[1]/div[1]/label/input', '1');

Can some help me with this, I'll be very grateful.


Solution

  • I don't think that class will match.

    This should work, though it's untested:

    '//div[contains(@class, "field-documento-id_validade")]//input[@type="checkbox"]'