2015-09-25 73 views
0

我在Java中使用Selenium來測試webapp中複選框的檢查。以下是我的代碼:如何在Java中使用Selenium Webdriver檢查複選框?

boolean isChecked = driver.findElement((By.xpath(xpath1))).isSelected(); 

但是,此代碼返回不正確的值。在HTML複選框:

活動複選框

<div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default ui-state-active"> 
<span class="ui-chkbox-icon ui-icon ui-icon-check ui-c"></span> 
</div> 

活動狀態複選框

<div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"> 
<span class="ui-chkbox-icon ui-icon ui-c ui-icon-blank"></span> 
</div> 

我怎樣才能在硒的webdriver解決這個問題與Java?將不勝感激任何幫助。

回答

2

你不能使用isSelected(),因爲它不是一個標準html輸入元素。 我建議的解決辦法是:你可以採取類屬性,並與活躍之一查詢:

if(driver.findElement((By.xpath(xpath1))).getAttribute('class') == 'ui-chkbox-box ui-widget ui-corner-all ui-state-default ui-state-active') 
    return True 
else 
    return False 
1

問題主要是因爲您創建的複選框不是html具有的標準輸入複選框元素,而是自定義元素。爲了檢查它,你可以對它進行點擊操作,看看它是否有效。

driver.findElement(By.cssSelector('div.ui-chkbox-box)).click(); //check the checkbox 

爲了驗證它是否被選中,您可以驗證類增加了ui-state-active div元素,當它活躍的元素。這是如何 -

try{ 
    driver.findElement(By.cssSelector('div.ui-state-active')); //find the element using the class name to see if it exists 
} 
catch(NoSuchElementException e){ 
    System.out.println('Element is not checked'); 
} 

或者獲取元素的類屬性,然後用它來查看它是否存在。

driver.findElement(By.cssSelector('div.ui-chkbox-box')).getAttribute('class'); 

希望它有幫助。

+0

在頁面已超過10複選框相同的屬性。 – Milky

1

我設法解決,但它不是太漂亮的解決方案:

String a = driver.findElement((By.xpath(xpath1))).getAttribute("class"); 
System.out.print(a.contains("ui-state-active")); 
相關問題