2015-09-25 2 views
0

Я использую Selenium в Java, чтобы проверить проверку флажка в webapp. Вот мой код:Как я могу установить флажок в Selenium Webdriver с Java?

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> 

Как я могу решить эту проблему в Selenium 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 к элементу сНа при его активном. Вот так:

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 checkbox же атрибут. – Milky

1

мне удалось решить, но это не слишком симпатичен решение:

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