Selenium无法识别具有复杂属性的复选框

时间:2017-01-19 11:55:22

标签: c# selenium xpath checkbox selenium-webdriver

我在webapp上有以下复选框,我正在创建selenium脚本。 我遇到的问题是我的脚本无法找到此复选框。

我的代码:

        WebDriverWait wait = new WebDriverWait(SELENIUMWebDriver.Driver, TimeSpan.FromSeconds(30));
        wait.Until(ExpectedConditions.ElementIsVisible(
            By.XPath("input[@ng-model=\"model['attributes']['3']['attributes']['38'].value\"]"))).Click();



<div class="checkbox" ng-class="{ disabled: form.schema.isDisabled }">
   <label>
   <input type="checkbox" ng-disabled="form.schema.isDisabled" ng-change="form.onChange(model['attributes']['3']['attributes']['38'].value, form)" ng-model="model['attributes']['3']['attributes']['38'].value" ng-model-options="::form.ngModelOptions" ng-true-value="::'True'" ng-false-value="::'False'" class="ng-pristine ng-untouched ng-valid ng-empty"> 
   <span class="checkbox-label ng-binding" ng-bind="form.title">Registratie EVR/SFH?</span>
   </label>
   <div class="help-block ng-binding ng-hide" ng-show="::form.description" ng-bind-html="form.description"></div>
</div>
&#13;
&#13;
&#13;

我做错了什么?

2 个答案:

答案 0 :(得分:0)

如果您有多个相同的className复选框,请使用index

尝试以下操作
By.XPath("//input[@class='ng-pristine ng-untouched ng-valid ng-empty'][@type='checkbox'][1]");

<强>更新

By.XPath("//span[contains(text(),'Registratie')]/preceding-sibling::input[@class='ng-pristine ng-untouched ng-valid ng-empty'][@type='checkbox']");

答案 1 :(得分:0)

你能用这个xpath吗?

//span[contains(text(), 'Registratie EVR/SFH?')]/preceding-sibling::input

我看到这个值也可以改变语言。如果是这种情况,您可以添加&#34;或&#34;进入你的xpath所以要么是可以接受的。