t.me/atinfo_chat Telegram группа по автоматизации тестирования

Использование CSS локаторов в Selenium


(Mykhailo Poliarush) #1

http://www.w3.org/TR/CSS2/selector.html

http://www.w3.org/TR/2001/CR-css3-selectors-20011113/


(Lena) #2

Selenium + JAVA

есть страница поиска товаров.

задав определенные критерии поиска, на странице отображается список товаров 

необходимо в массив загнать их названия.

...

 

for (int i=0;i<counter;i++){

wash[i]= selenium.getText("//div[@id='mainpanel']/ul[@class='prods']/li['i']/div[1]/div[1]/a");

System.out.println(wash[i]);

}

...

но при этом мне выводит первое название товара counter раз, почему? массив определен как стринг (String wash[]= new String[50];)

 


(namby-pamby) #3

возможно согрешу, но почему бы не сделать так

определяем обьект в котором эти линки находятся, дальше делаем obj.getElementsByTagName("a") на выходе уже коллекция. названия будут inner/outer HTML (возможны варианты). Сорри что не пытаюсь найти ошибку в вашем коде, не могу лицезреть сорс страницы


(Mykhailo Poliarush) #4

на будущее, надо еще и указывать пример исходного кода страницы, чтобы задача была более очевидна.

проблема я думаю в xpath "//div[@id='mainpanel']/ul[@class='prods']/li['"+i+"']/div[1]/div[1]/a", но для того чтобы быть полностью уверенным надо видеть исходный код сгенеренной страницы, так как елементы div[1] тоже могут делать поблемы.

А вообще надо оптимизировать xpath на "//div[@id='mainpanel']/ul[@class='prods']/li['"+i+"']//a" чтобы избжать проблем с div[1]


(Lena) #5

Изменила в xpath-e ../li['i']/.. на ../li["+i+"]/..  и проблема решилась :) + оптимизировала xpath

Все замечания учту на будущее!!!

Спасибо за помощь!


(Lena) #6

возможно так сделать можно, но я об этом впервые слышу))) новичек в этом деле :)

попробую так же определить объект этим способом

Спасибо за помощь!


(Mykhailo Poliarush) #7

По поводу определения локаторов можно почитать следующие статьи http://automated-testing.info/knowledgebase/tags/lokator


(Lena) #8

 

 ID юзера генерится при каждом запуске. Чтобы вытянуть текст из span необходимо знать id юзера.

...

for (int i=1;i<kol_players.intValue(); i++){

id=browser_FF.getAttribute("//ul[@class='list-players']/li["+i+"]@id");

System.out.println("user's id["+i+"]="+id);

span=browser_FF.getAttribute("//li[@id="+id+"]/span");

 }  

...

id вытянуло без проблем, а вот на выделенную строчку ругается: com.thoughtworks.selenium.SeleniumException: ERROR: Invalid xpath [2]: //li[

в чем проблема?!

 

 

...
<h3>List of Players:</h3>
    <ul class="list-players">
            <li id="user-info-line-18250">
            <b class="player1"></b>
            <p class="player1" style="color: #cccccc !important;">
                qwerty ($1000)
            </p>
                                        <span>Owner</span>
                        </li>
            <li id="user-info-line-5486">
            <b class="player2"></b>
            <p class="player2" style="font-weight: bold;color: #cccccc !important;">
                vvvvvv ($1000)
            </p>
                            <span>
                    <a href="index.php?r=user/logout&id=5486" style="color: #ffffff;">
                        Disconnect                    </a>
                </span>
                                    </li>
        </ul>

 

...

 

 

 


(Lena) #9

все дело в типе данных. 

id - String.

преобразовала в int и проблема исчезла.