2015-04-22 2 views
0

Я пытаюсь проверить, выбраны или не выбраны некоторые флажки с помощью селена WebDriver.Проверьте, выбраны или не выбраны некоторые флажки с селеном WebDriver

Thant - это то, что я сделал.

 if (driver.findElement(By.id("olVizAdminCad:IconLink:mucl403470UG1")).isSelected()) 
    { 
     System.out.println("is selected"); 
    } 
    else 
    { 
     System.out.println("is not selected"); 
    } 

Проблема в том, что при выборе на самом деле это «не выбрано». Поэтому я думаю, что у меня возникают проблемы с «if».

По этой ссылке http://www.m-i-u.de/display-i94106bkffbp.html Я покажу вам изображение части кода. Эта часть соответствует одному флажку всех, что у меня есть.

Идентификатор элемента может выглядеть как динамический идентификатор, но нет, он не меняется.

Видимо, он должен работать. Но это не так, может ли кто-нибудь сказать какие-либо советы?

Большое спасибо Пабло

+0

- элемент, который можно найти по идентификатору? –

+0

Юджин, что вы имеете в виду с изменением идентификатора? Если я изменю Идентификатор, это не будет работать. Я имею в виду, что элемент не будет найден, и отображаемое сообщение будет «не выбрано». Аура Я не уверен, когда элемент (который имеет идентификатор) является или не может быть найден. Как я могу это знать? Просто попробуйте, работает ли это или нет? –

ответ

1

Попробуйте это:

if (driver.findElement(By.id("olVizAdminCad:IconLink:mucl403470UG1")).getAttribute("checked") != null) 
    { 
     System.out.println("is selected"); 
    } 
    else 
    { 
     System.out.println("is not selected"); 
    } 

Update:

I извинения за любые ошибки синтаксиса, я не работаю в Java, но вы можете увидеть, что я Я здесь. Я также не вижу в HTML, что вы установили какой-либо проверенный атрибут, как пользовательский интерфейс знает, что он был проверен? Я просто полностью предполагаю здесь:

List<WebElement> listIds = driver.findElements(By.xPath("//a[contains(@id,'olVizAdminCad:IconLink:muc')]")); 
Map<String, String> checkedItems = new HashMap<String, bool>(); 

for(Iterator<WebElement> i = listIds.iterator(); i.hasNext();) 
{ 
    String item = i.next(); 
    if(item.getAttribute("checked") != null) 
    { 
     checkedItems.put(item.getAttribute("id").toString(),true); 
    } 
    else 
    { 
     checkedItems.put(item.getAttribute("id").toString(),false); 
    } 
} 

Вы можете использовать CheckedItems, чтобы посмотреть, что было проверено и не зависит от их ид?

Обновление 2:

Ok! это фальшивый флажок! он использует изображения, чтобы изменить пользовательский интерфейс ...

List<WebElement> listIds = driver.findElements(By.xPath("//a[contains(@id,'olVizAdminCad:IconLink:muc')]/center/img")); 
Map<String, String> checkedItems = new HashMap<String, bool>(); 

for(Iterator<WebElement> i = listIds.iterator(); i.hasNext();) 
{ 
    String item = i.next(); 
    if(item.getAttribute("src").contains("checked")) 
    { 
     checkedItems.put(item.getAttribute("id").toString(),true); 
    } 
    else 
    { 
     checkedItems.put(item.getAttribute("id").toString(),false); 
    } 
} 

В принципе вы можете использовать Element.getAttribute("src").contains("checked"), чтобы определить, если флажок установлен, и вы можете просто изменить его item.getAttribute("src").contains("unchecked"), чтобы проверить, если это не остановить.

+0

Это все еще не работает. Может быть, было бы неплохо попытаться найти элемент, используя что-то другое для Id? Я на самом деле немного смущен. Я не знаю, почему местоположение Id работает иногда, а иногда и нет. Наверное, я получаю это с опытом. –

+0

Можете ли вы опубликовать HTML-код, а затем я могу обновить свой ответ, чтобы отобразить лучший способ найти элемент. –

+0

Да, я прикрепил фотографию интересной части (я думаю) кода. http://www.m-i-u.de/display-i94110b02muf.html Он показывает ту часть, где определены 3 флажка –

3

WebElement.isSelected() это относится только к входным элементам согласно the selenium documentation

В вашем случае Промоссылка a, вы должны проверить ребенок IMG тег для того, чтобы определить, если ваш пользовательский флажок или нет.

Надеюсь, что это поможет.

+0

Хорошо, что имеет смысл, но поскольку у меня есть 3 флажка, и тег каждого из них одинаковый («a»). Я должен сделать что-то еще, чтобы правильно найти каждый элемент? Например, если я только пишу это: if (driver.findElement (By.tagName ("a")). IsSelected()). код не найдет правильный флажок. –

+0

Нет, способ, которым вы находите свой элемент, прав. Проблема состоит в том, что вы не можете вызвать метод isSelected на теге, который не используется. Попробуйте проверить атрибут 'src' дочернего тега img, чтобы узнать, совпадает ли он с отмеченным или не отмеченным. – segalaj

+0

Но если я делаю это так: if (driver.findElement (By.tagName ("a")). IsSelected()), я использую тег ввода. Но дело в том, что существует несколько элементов, чье имя тега «a». Не могли бы вы объяснить, как я могу использовать этот атрибут src? Большое спасибо! –

Смежные вопросы