我正在尝试选择一个复选框,但我无法在其他线程中找到任何解决方案。
代码: @FindBy(css =“ input.ng-valid.ng-dirty.ng-touched”) Web元素chrgAllocFee;
chrgAllocFee.click();
但是当我以相同的方式定义和使用其他复选框时,它不起作用。我发现与其他代码相比,不同之处在于html代码在
请建议如何定义以便可以被识别。
获取错误: org.openqa.selenium.NoSuchElementException:否这样的元素:无法找到元素:{“方法”:“ css选择器”,“选择器”:“ input.ng-valid.ng-dirty.ng-touched”} (会话信息:chrome = 69.0.3497.92)
答案 0 :(得分:1)
所需元素是Angular元素,因此您必须诱使 WebDriverWait 使元素可点击,并且可以使用以下任一解决方案:
cssSelector
:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.ng-valid.ng-dirty.ng-touched[name='ChargeAllocationFee']"))).click();
xpath
:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@class='ng-valid ng-dirty ng-touched' and @name='ChargeAllocationFee']"))).click();
答案 1 :(得分:0)
我找到了解决方法: 我使用javascript单击了该字段,并且效果很好,这是代码:
JavascriptExecutor js =(JavascriptExecutor)驱动程序;
js.executeScript(“ arguments [0] .click();”,CamWizOR.chrgAllocFee);
CamWizOR.chrgAllocFee-> WebElement名称
@FindBy(xpath =“ // input [@ name ='ChargeAllocationFee'and @ type ='checkbox']”)
WebElement chrgAllocFee;