我必须选中以下HTML代码段中包含的复选框。该复选框包含在输入标签中
<div formarrayname="entityTypes" fxlayout="" fxlayoutgap="10px" class="ng-untouched ng-pristine ng-valid ng-star-inserted" style="flex-direction: row; box-sizing: border-box; display: flex;"> <div class="form-row ng-untouched ng-pristine ng-valid" fxlayout="row" fxlayoutgap="10px" style="flex-direction: row; box-sizing: border-box; display: flex;"> <app-checkbox formcontrolname="isSelected" _nghost-c26="" class="ng-untouched ng-pristine ng-valid"><div _ngcontent-c26="" class="checkbox-wrapper"> <span _ngcontent-c26="" class="tix-checkbox" fxlayout="row" fxlayoutalign="start center" style="flex-direction: row; box-sizing: border-box; display: flex; max-height: 100%; place-content: center flex-start; align-items: center;"> <!----> <input _ngcontent-c26="" type="checkbox" name="undefined" class="ng-star-inserted" style="" xpath="1"> Funder <label _ngcontent-c26=""></label> </span> <!----> <!----> </div> </app-checkbox> </div> </div>
我已经尝试过各种方法来识别并选择它,但是它从来都不可见。我已将复选框标签的文本打印到控制台,因此无法理解为什么复选框本身不可见。以下Java代码成功打印了标签,但未能单击复选框,并抛出错误元素不可见。
//print text of input box WebElement labelFunder = driver.findElement(By.xpath("//div[@fxflex='50']//div[3]//div[1]//app-checkbox[1]//div[1]//span[1]//input[1]")); String textFunderLabel2 = labelFunder.getAttribute("innerText").toString(); System.out.println(textFunderLabel); labelFunder.click();
我尝试了不同的等待,但均未成功。
//select the funder checkbox //driver.findElement(By.xpath("//div[@fxflex='50']//div[3]//div[1]//app-checkbox[1]//div[1]//span[1]//input[@type='checkbox']")).click(); //WebDriverWait wait = new WebDriverWait(driver, 30); //WebElement checkbox = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("/html[1]/body[1]/app-root[1]/main[1]/section[1]/div[2]/app-company-detail[1]/div[2]/form[1]/md-tab-group[1]/div[1]/md-tab-body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[3]/div[1]/app-checkbox[1]/div[1]/span[1]/input[1]"))); //checkbox.click();
任何人都可以在这里向我指出正确的方向
谢谢。
尝试使用javascript单击:
public void clickElementWithJS(By locator) { String jsClickCode = "arguments[0].scrollIntoView(true); arguments[0].click();"; try { WebElement elementToClick = driver.findElement(locator); ((JavascriptExecutor) driver).executeScript(jsClickCode, elementToClick); } catch(Exception e) { System.out.println("Element could not be clicked.. " + e.getMessage()); } }