我想创建两种方法,一种方法是单击特定的复选框,另一种方法是取消选择相同的复选框。 我试图使用XPath和ID,但无法这样做。 请告诉我该怎么做。这是HTML:
IJavaScriptExecutor js = (IJavaScriptExecutor)_driver;
js.ExecuteScript("window.scrollBy(200,document.body.scrollHeight)", "");
var mileageTextbox = driver.FindElement(By.Id("VehicleMileageMax"));
mileageTextbox.SendKeys("9500");
var checkBox = driver.FindElement(By.XPath("//label[text()='financial-check-all-8']::input[@type='checkbox'"));
Thread.Sleep(2000);
checkBox.Click();
元素不可见
HTML代码:
<input id="financial-check-all-8" type="checkbox" selected="filter.isDisabled" ng-model="filter.isDisabled" ng-change="vm.emptyFilterValue(filter);" class="ng-pristine ng-untouched ng-valid ng-empty" aria-invalid="false" tabindex="44"> <label for="financial-check-all-8" id="enabled-8" class="form-checkbox-label"></label>
答案 0 :(得分:0)
您可以尝试使用以下代码:
//input[starts-with(@id,'financial-check-all') and @ng-model='filter.isDisabled']
代码:
var checkBox = driver.FindElement(By.XPath("//input[starts-with(@id,'financial-check-all') and @ng-model='filter.isDisabled']"));
checkBox.Click();
编辑:
根据共享HTML,您可以使用以下xpath:
尝试在单击之前也等待,只需尝试Thread.Sleep(4000);
,如果可行,那么我们可以轻松地将其替换为 webdriverwait 。
//label[@for='VehicleMileageMax']/../preceding-sibling::div/descendant::input
或使用此xpath:
//label[@for='VehicleMileageMax']/../preceding-sibling::div/descendant::label