如何验证在selenium webdriver

时间:2016-04-02 04:58:22

标签: java selenium-webdriver

我正在对一个应用程序进行自动化测试,我正面临一个方案来验证是否使用自动化代码检查复选框

我的网络应用程序是使用角度js开发的,开发人员使用了Checked属性

我试过.isselected但它不适合我。

4 个答案:

答案 0 :(得分:0)

如果您想验证是否选中了复选框,请注意,如果选中了复选框,则任何带有复选框的输入标签都会显示隐藏的属性值,其值为= True如果没有那么它的值是= null,因此在此基础上你可以很容易地识别哪个Check-box被选中。下面找到一个相同的工作示例:

WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.manage().window().maximize();
driver.get("C:\\Users\\rajnish\\Desktop\\myCheckox.html");

// working with check boxes
// first take all the check boxes inside a list like below
List<WebElement> mycheckBox = driver.findElements(By.xpath("//*[@type='checkbox']"));

// apply the for loop to identify/ verify if a check boxes is selected or not
for(int i=0;i<mycheckBox.size();i++){
    System.out.println("attribut value Selected of Check-box is : " + mycheckBox .get(i).getAttribute("selected"));
    // if Check-box is selected then value of selected attribute is True else null
    if( mycheckBox.get(i).getAttribute("selected").equals("null")){
        // if loop will only run when value of selected attribute is null
        // i.e only when  Check-box is not selected 
        mycheckBox .get(i).click();
    }
}

答案 1 :(得分:0)

使用已选择功能

WebElement el = driver.findElement(By.id("element Id"));
el.click()
el.isSelected()

答案 2 :(得分:0)

您可以使用包含&#34; .ng-not-empty&#34;的选择器。或者&#34; ng-empty&#34;类:

List<WebElement> eltsUnchecked = driver.findElements(By.cssSelector("input[ng-model='checkboxModel.value1'].ng-empty"));
bool isNotCheched = eltsUnchecked.size() > 0;
if (isNotCheched) {
  // check the checkbox
  eltsUnchecked.get(0).click();
}

List<WebElement> eltsChecked = driver.findElements(By.cssSelector("input[ng-model='checkboxModel.value1'].ng-not-empty"));
bool isCheched = eltsChecked.size() > 0;
if (isCheched) {
  // uncheck the checkbox
  eltsChecked.get(0).click();
}

或通过检查&#34; .ng-not-empty&#34;的存在或者&#34; ng-empty&#34;在class属性中:

WebElement checkbox = driver.findElement(By.cssSelector("input[ng-model='checkboxModel.value1']"));
bool isCheched = checkbox.getAttribute("class").contains("ng-not-empty");
bool isNotChecked = checkbox.getAttribute("class").contains("ng-empty");
if (isCheched) {
  // uncheck the checkbox
  checkbox.click();
} else if (isNotChecked) {
  // check the checkbox
  checkbox.click();
}

但是,如果您使用&#34;已检查&#34;然后改为属性:

WebElement checkbox = driver.findElement(By.cssSelector("input[ng-model='checkboxModel.value1']"));
bool isCheched = checkbox.getAttribute("checked").length > 0;
bool isNotChecked = checkbox.getAttribute("checked").length == 0;

答案 3 :(得分:0)

使用isSelected代替下面的代码所示的isselected。

Assert.assertEquals(wd.findElement(By.[your element locater])).isSelected(),true);

我已经在我的代码中成功使用了它,并且可以正常工作。如下:

Assert.assertEquals(wd.findElement(By.xpath("//input[@id='chkremember']")).isSelected(),true);