0

我正在使用下面的代碼,測試用例沒有失敗,但代碼沒有檢查複選框。如何在java的selenium web驅動中逐個檢查所有複選框?

@Test(priority=11) 
public void Test_CheckBox_Check()throws InterruptedException { 

    List<WebElement> els = driver.findElements(By.xpath("//md-checkbox[@aria-checked='false']")); 
    System.out.println(Integer.toString(els.size())); 
    for (WebElement el : els) { 

     el.click(); 

    } 
} 

Test Case is not failing Xptha and the elements

enter image description here

+0

可以擴大目前的截圖擴展了一個以上的股利後?一個具有類價值 - 'md-container md-ink-ripple'。我認爲複選框是在這個div裏面。 – Grasshopper

+0

請看看更新後的屏幕截圖。 – HillHacker

+0

你可以嘗試點擊這個div而不是這個裏面的嗎?不完全確定,但我認爲它應該工作。 – Grasshopper

回答

1

您使用的可能是導致問題下面嘗試定位器:

//div[@class='ng-scope flex-20']//following::md-checkbox**[@role='checkbox']** 

您可以在星號,如果全部省略部分由md-checkbox標識的元素是複選框。

下面的代碼在另一種情況下工作對我來說:

List<WebElement> checkboxes = driver.findElements(By.xpath("//div[@class='control-group']//following::input[@type='checkbox']")); 
     for(WebElement check:checkboxes){ 
      check.click(); 
     } 
+0

失敗:Test_CheckBox_Check org.openqa.selenium.InvalidSelectorException:給定選擇器// div [@ class ='ng-scope flex-20'] // following :: md-checkbox ** [@ role ='checkbox'] **無效或不會導致WebElement。發生以下錯誤: InvalidSelectorError:無法找到xpath表達式的元素// div [@ class ='ng-scope flex-20'] // following :: md-checkbox ** [@ role ='checkbox' ] **,因爲有以下錯誤: TypeError:表達式無法轉換爲返回指定的類型。 – HillHacker

+0

以上例外即將到來。請看看,並幫助我。 – HillHacker

0

加入一些等待它的工作

@Test(priority=11) 
public void Test_CheckBox_Check()throws InterruptedException { 

    Thread.sleep(2000); 

    List<WebElement> els = driver.findElements(By.xpath("//md-checkbox/div/div[@class='md-icon']")); 
    System.out.println(Integer.toString(els.size())); 
    for (WebElement el : els) { 

     Thread.sleep(2000); 

     el.click(); 

     System.out.println(el.getText()); 
     driver.findElement(By.xpath("//div[@class='col-xs-1']")).click(); 

    } 
相關問題