2012-10-16 42 views
0

我想檢查/取消選中頁面中的所有複選框。 代碼片段如下: -如何使用webdriver檢查頁面上的所有複選框?

@Test 
public void checkBoxAll() { 

    List<WebElement> checkBoxList=driver.findElements(By.cssSelector("input [type='checkbox']")); 
    for(WebElement checkBox:checkBoxList) 
    { 
     checkBox.click(); 
    } 
    List<WebElement> unCheckedBoxList=driver.findElements(By.cssSelector("input:not(:checked)[type='checkbox']")); 
    if(!CollectionUtils.isEmpty(unCheckedBoxList)) 
     Assert.fail(); 

} 

首先,我發現使用(「輸入[類型=‘複選框’]」)所有複選框。然後點擊它們在循環,然後找到所有複選框這被檢查(爲了成功執行測試用例,應該沒有)。 我試圖從谷歌的一些做法,但不工作me.Please告訴我什麼,我做錯了是一個新手

回答

1

不知道什麼是什麼,我前面以上提出的解決方案做的問題,但都沒有幹活試用不同的事情和以下是工作解決方案。 id ='first'是所有複選框都放置在其中的div的ID。

@Test 
public void CheckBoxAll() { 
    String cssSelectorForNotCheck=("[id='first'] input[type='checkbox']:not(:checked)"); 
    List<WebElement> checkBoxList=driver.findElements(By.cssSelector(cssSelectorForNotCheck)); 
    for(WebElement checkBox:checkBoxList) 
    { 
     checkBox.click(); 

    } 
    checkBoxList=driver.findElements(By.cssSelector(cssSelectorForNotCheck)); 
    if(!checkBoxList.isEmpty()) { 
     Assert.fail(); 
    } 
1

一種解決方案是:

// Find all checked checkboxes with xpath 
List<WebElement> checkBoxList=driver.findElements(By.xpath("//input[@type='checkbox' and @checked='checked']")); 
     for(WebElement checkBox:checkBoxList) 
     { 
      checkBox.click(); 
     } 

// Assert if any checkbox left checked 
List<WebElement> allCheckedBoxList=driver.findElements(By.xpath("//input[@type='checkbox' and @checked='checked']")); 
    if(!allCheckedBoxList.isEmpty()) { 
     Assert.fail(); 
    } 

更新 如果您需要尋找選中複選框使用以下XPath來代替:

//input[@type='checkbox' and not(@checked='checked')] 
+0

它應該爲你工作,我在我們的TestCase中使用這個片段。問題在哪裏?它只是不適合你,或者你在做一些運行時異常?是否有可能檢查複選框是否觸發提交或頁面重新加載? – TouDick

+0

是的,它不適合我。元素無法被選中。我不是css的專家,但可以說可能的原因可能是html是如何實現的。 – sandy

相關問題