Watir-WebDriver: поиск элементов, класс которых не «завершен» - PullRequest
1 голос
/ 13 марта 2012

У меня есть куча li элементов. Они либо с uncompleted, «текущим» или completed классом, либо без класса.

Как найти все li элементы без completed класса?

Пока что я делаю это, выбирая необходимые li объекты из коллекции li (посредством вызова #attribute_value('class'), но, возможно, в Watir-WebDriver есть какая-то элегантная стратегия определения местоположения?

UPD: Пока существует некоторое недопонимание вопроса.

Я хочу знать, есть ли в Watir-WebDriver стратегия определения местоположения элементов, класс которых не completed.

Я знаю, что могу сделать это с Ruby и сделать это так:

browser.lis.select do |li|
  li.attribute_value('class') != 'completed'
end

Но вопрос в том, смогу ли я сделать это в одной строке, передав некоторый аргумент #lis

UPD2: Просто понял, что данные имена классов сужают решения. Обновленный вопрос и извините за это.

Ответы [ 2 ]

2 голосов
/ 13 марта 2012

Коллекция LI поддерживает локаторы, что означает, что вы можете делать:

browser.lis(:class, 'uncompleted').each{ |x|
    puts x.text
}

ОБНОВЛЕНИЕ : Для случая, когда есть несколько классов, вы можете изменить вышеприведенное, чтобы использовать регулярное выражение для проверки на не завершенность:

browser.lis(:class, /^(?!completed$)/).each{ |x| puts x.class_name }

Возвращает все li, которые не имеют класса или не являются полностью «завершенными» (например, «завершены2»).

Примечание: я думаю, что .class_name может иметь лучшую поддержку, чем attribute_value('class') (который, я считаю, не работает в IE, поскольку должен быть className).

1 голос
/ 13 марта 2012

Чтобы не предполагать, что существует только два класса массивов, вы можете сделать:

    all = browser.lis.collect { |li| li.class }
    completed = browser.lis(:class, 'completed').collect { |li| li.class }

    not_completed = (all - completed)

или даже:

all = browser.lis.collect { |li| li.class }
not_completed = Array.new

all.each do |li|
    if li.class != "completed"
       not_completed << li
    end
end
...