2016-10-25 3 views
0

Я хочу сравнить значения каждого запроса с помощью clj-webdriver. Каждый Все запрос имеет один и тот же класс.Как сравнить значения каждого запроса с использованием selenium clj-webdriver

Для первого запроса, чтобы проверить, если значение равно я использовал

(is (= "2" (text ".class"))) 

Но что я должен делать, чтобы сравнить все значения запроса, которые имеют тот же класс.

Если предположим, что вопросы

What is your favourite number? 2 
what is your shoe size?   3 

Как 10 вопросы, имеющие тот же класс. Пожалуйста, помогите мне, как сравнить все запросы с тем же классом.

HTML-код:

<tr data-toggle="coll" href="#623"> 
    <td class="desc">...</td> 
    <td class="foo"> 
    <span class="fav number"> 
    <sup class="number number"> 
    2 
    </sup> 
    " 
    /
    " 
    <sub> 
    2 
    </sub> 
    </span> 
    </td> 
    </tr> 
<tr data-toggle="coll" href="#625"> 
    <td class="desc">...</td> 
    <td class="foo"> 
    <span class="shoe size"> 
    <sup class="size number"> 
    3 
    </sup> 
    " 
    /
    " 
    <sub> 
    3 
    </sub> 
    </span> 
    </td> 
    </tr> 
+0

Вы проверили подходящие селектор CSS? (https://www.w3.org/TR/css3-selectors/#selectors) –

+0

@PiotrekBzdyl Не совсем понимаю. Можете привести пример использования – joey

+0

Пожалуйста, сначала исправьте свой вопрос - трудно понять, что вам нужно. В одном предложении вы пишете «Но что мне делать, чтобы сравнить все значения запроса, которые имеют * другой класс», а в другом «как сравнить все запросы, имеющие * тот же класс *».Предоставьте фрагмент HTML, с которым вы работаете. –

ответ

0

Я не уверен, что если у вас есть контроль над HTML, который испытывается. Если я настоятельно рекомендую, чтобы изменить его так, у вас есть стабильные идентификаторы, сгенерированные для тестируемых элементов, так что вы можете определить их легко в тестах:

<div id="shoe-size-answer">40</div> 

Тогда ваши тесты будут столь же легко, как:

(is (text "#shoe-size-answer") "40"))` 

С идентификаторами вам не нужно знать структуру вашего документа HTML, и ваши тесты не будут ломаться, когда вы измените части своей страницы (и ваши идентификаторы не изменятся).

Вы можете также использовать некоторые фиктивные классы CSS, чтобы отметить некоторые разделы вашего HTML и навигацию вложенных части вашей страницы используя их:

<div class="a1"> 
    <div class="b1"> 
    a1b1 
    </div> 
    <div class="b2"> 
    a1b2 
    </div> 
</div> 
<div class="a2"> 
    <div class="b1"> 
    a2b1 
    </div> 
    <div class="b2"> 
    a2b2 
    </div> 
</div> 

Затем вы можете задать вопросы, используя CSS пути:

(is (text {:css ".a1 .b1"}) "a1b1") 
(is (text {:css ".a2 .b1"}) "a2b1") 

И, наконец, для меня самый простой способ получить мои запросы - это экспериментировать в REPL. Просто начните REPL с зависимостями проекта по классам и попробовать:

(require '[clj-webdriver.taxi :as taxi]) 

(taxi/set-driver! {:browser :chrome}) 

(taxi/to "http://localhost:8000/index.html") 

(taxi/find-element {:css ".a1 .b1"}) 
;; => #clj_webdriver.element.Element{:webelement #<Tag: <div>, Text: a1b1, Class: b1, Object: [[...] -> css selector: .a1 .b1]>} 

(taxi/text {:css ".a1 .b1"}) 
;; => "a1b1" 

Вы можете даже сохранить испытанную страницу как статический HTML файл и из каталога, в котором он будет сохранен запустить следующее, чтобы основной сервер HTTP работает (вы должны Python установлен на вашем компьютере):

python -m SimpleHTTPServer 8080 

(где 8080 является порт сервера) и доступ к нему в http://localhost:8080. Это позволит вам играть со страницей без необходимости отвечать на весь сценарий, чтобы перейти на тестируемую страницу.

Вы можете узнать больше о запросах CSS и XPath в manyonlinetutorials.

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