1

ページにあるすべてのチェックボックスをチェック/チェック解除したい。コード スニペットは次のとおりです。

@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();

}

まず、("input [type='checkbox']")を使用してすべてのチェック ボックスを見つけます。次に、それらをループでクリックし、チェックされているすべてのチェック ボックスを見つけます (テスト ケースが正常に実行されるには、何もないはずです)。私はグーグルからいくつかのアプローチを試みましたが、うまくいきません.初心者である私が間違っていることを教えてください

4

2 に答える 2

2

以前に行っていた問題や上記で提案した解決策の何が問題だったのかわかりませんが、どちらも機能しませんでした。さまざまなことを試しましたが、以下が機能する解決策です。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();
    }
于 2012-10-17T10:09:59.150 に答える
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')]
于 2012-10-16T14:11:57.683 に答える