selenium选择器 - 如何检查复选框?

时间:2013-05-20 14:21:21

标签: selenium selenium-ide

我似乎无法使用点击复选框。
控制台中没有错误,它显示单击但未选中复选框 我尝试过同时使用clickcheck,但似乎都没有勾选复选框。 使用IDE记录器建议的数据库ID(102)不是一个选项,因为每次运行时ID都会发生变化。

我正在尝试:css=fieldset.choices ol li label input为我的定位器。

我也尝试过://fieldset[@class='choices']//ol//li//label//input然后控制台再次点击,但实际上并没有在浏览器中检查该复选框。

我还尝试了//input[@type='checkbox']选择器,因为它是屏幕上的第一个checlbox,但没有运气,但没有明确的错误。

HTML是:

<fieldset class="choices">
  <legend class="label">
    <label>
      Grades
    </label>
  </legend>
  <input id="school_grades_none" type="hidden" value="" name="school[grade_ids][]">
  </input>
  <ol class="choices-group">
    <li class="choice">
      <label for="school_grade_ids_102">
        <input id="school_grade_ids_102" type="checkbox" value="102" style="border: none" name="school[grade_ids][]">
        </input>
        PK3
      </label>
    </li>
    <li class="choice">
    ...
    </li>
    <li class="choice"></li>
    ...
    </li>
    <li class="choice"></li>
    ...
    </li>
    ...

2 个答案:

答案 0 :(得分:1)

当您使用id=school_grade_ids_102作为定位器而不是xpath或css时,该怎么做。

<强>更新

你如何使用contains

//input[contains(@id, 'school_grade_ids_')] # add [1] or [2], etc. at the end

答案 1 :(得分:0)

setCheckboxValue(By.id("checkboxId"), true /* or false*/);

public void setCheckboxValue(By by, boolean checked) {
        WebElement e = getDriver().findElement(by);
        if(!e.isSelected() && checked) {
            e.click();
        }
    }