无法使用Java选择Selenium Webdriver中的复选框

时间:2018-10-02 02:36:20

标签: java selenium selenium-webdriver xpath css-selectors

我正在尝试选择一个复选框,但我无法在其他线程中找到任何解决方案。

这是我的HTML代码下拉列表: enter image description here

代码: @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)

2 个答案:

答案 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;