Перейти к содержимому

Vikonder

Регистрация: 07 дек 2017
Offline Активность: 07 июн 2020 13:21
-----

Мои сообщения

В теме: Увеличить/Уменьшить значение InputBox по MouseClick

27 сентября 2018 - 08:38

lapa

 

именно это я и хочу сдеать:)

Но стрелки не определены как отделый элемент со своим xpath

Это внутренний "table" для общего элемента Input и попытка просто сделсть Click()

всего лишь фокусирует на общем элементе...


В теме: Прочитать все элементы из dropdown в List <String>

17 сентября 2018 - 09:51

Конструкция WebElement.getText()

                      WebElement.getAttribute("value")

у меня не прокатывает и сыпет ошибками типа:

 

400 incorrect JSON status mapping for scale element reference [object null]....

 

Вообще, трансформация WEbElement --> String очень хрупкая конструкция, на выходе которой очень часто получаются flaky тесты.


В теме: Прочитать все элементы из dropdown в List <String>

15 сентября 2018 - 19:02

Spock

Сомневаюсь, что вы бы у нас долго продержались:)

 

Randomize выбора всех возможных элементов системы после постороения Builder на каждый - это концептуальная фишка нашего

нового начальства... 

Сотни тестов, которое я написал ранее по вашей схеме идут в разрез с новой идеологией,

поэтому всё новое хотят делать именно так, поэтому изголяться приходится по-черному....


В теме: Использовать часть элементов из List<WebElement> c click()

09 сентября 2018 - 17:39

Представь себе 3 фильтра

 

Filter 1         Filter2         Filter 3      

All                  All               All

Rack1           Device1       Power

Rack2           Device2       Managment 

Rack3           Device3       Data    

...                    .....              ....

И какая матрица возможностей получится?


В теме: Использовать часть элементов из List<WebElement> c click()

09 сентября 2018 - 15:14

Spock, легитимный вопрос...

 

Отвечаю:  Принцип домино построения нашего продукта подразумевает открытие меню и его под-меню

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

(только в случает кросс линков).

Например, Rack --> Device --> Sub-device --> Virtual Sub-device --> Controller --> Model....

 

Пожтому выбор элемента из считанного списка (строит FE angular) открывает разные (!) дополнительные опции

А посему, пробегаясь по листу я каждый раз могу проверить еще что-то дополнительное....

Надеюсь, понятно изложил 

 

По вопросу выше, я частично решил проблему, использовав конструкцию:  get(index).click()

   @Step(description = "filter all Racks Cables select and assertion")
    public  void assertAllCablesInRacks(List<WebElement> elementsInRackFilter) {

        List<WebElement> rackElements = getAllElementsRackFilter(CablingElements.RACK_FILTER_LIST, CablingElements.RACK_FILTER_SELECTED);

        int sizeOfList = elementsInRackFilter.size();

        for (int i=1; i<sizeOfList;i++){

            try {
                rackElements.get(i).click();
            } catch (StaleElementReferenceException e){
                System.out.println("<------------- The element reference of [object Null] -------------> ");
            }
            assertFilterCables();
            clickRackFilter();
            rackElements = getAllElementsRackFilter(CablingElements.RACK_FILTER_LIST, CablingElements.RACK_FILTER_SELECTED);
            
        }

    }

Пробема, которую я до сих пор не победил - это универсальность этого метода для нескольких DROPBOX на одно1 стринице

 

Например,  для случая  2-х таких элементов, метод прекрасно срабатывает для первого DropBox  (пробегает поочередно все нужные мне элементы списка с assertion)

                    и стопорится уже в начале выбора второго DropBox  (по тому же методу) именно на той же самой строчке get(i).click();

 

5e7de358be90adce10e8e5732d3dbe0a-full.jp

 

Индексы пробега у обоих DropBox похожи:

public static String RACK_FILTER_SELECTED = "//span[@formation-id='rack-title-%d']";
public static String RACK_TYPE_SELECTED = "//span[@formation-id='rack-type-%d']";

Метод один и тот же  для обоих, List считывается и заполняется элементами.

    @Step(description = "get all elements from the list")
    public List<WebElement> getAllElementsRackFilter(By xpathList, String xpathFilter) {
        List<WebElement> rackFilterList = new ArrayList<>();
        List<WebElement> rackFilterElements = driver.findElements(xpathList);

        for (int i=0; i<rackFilterElements.size(); i++) {

            String xpathRackFilter = String.format(xpathFilter, i);
            By xpathRack = By.xpath(xpathRackFilter);
            WebElement listElement = driver.findElement(xpathRack);
            rackFilterList.add(listElement);

        }

        return rackFilterList;
    }

но вот близнец не хочет выбрать и кликать на элемент

Может нужно очищать cache или обгулять списки и листы после первого использования?