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

Тестирование REST API
онлайн, начало 29 июля
Школа для начинающих тестировщиков
онлайн, начало 25 июля
Python для начинающих
онлайн, начало 26 июля
Автоматизация функционального тестирования
онлайн, начало 26 июля
Фотография

Как переключиться во фрейм — switchTo().frame?

selenium java

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 4

#1 bent533serg

bent533serg

    Новый участник

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Sergio

Отправлено 16 Январь 2019 - 08:22

Привет! Нужно во фрейм переключиться, но через wd.switchTo().frame("fssarmiframe"); не переключает, поэтому сделал через Action. Тоже падает, элемент по которому клик нужно сделать не находит, может переключение так и не произошло? т.к. Xpath корректный. 

Падает где точка останова

 protected  void  openCheckFLK() throws InterruptedException {
        Thread.sleep(3000);
        Thread.sleep(3000);
        Thread.sleep(3000);
        Thread.sleep(3000);


    //    wd.switchTo().defaultContent();
        //wd.switchTo().frame(wd.findElement(By.xpath("//iframe[@src='https://portal-dev.fss.local/fssarm/?']")));
      //  wd.switchTo().frame(wd.findElement(By.xpath("//div[@class='portlet-boundary portlet-boundary_48_ portlet-static portlet-static-end portlet-borderless portlet-iframe ']//iframe[@src='/fssarm/?']")));

        WebElement myframe = wd.findElement(By.xpath("//*[@id=\"fssarmiframe\"]"));
        Actions actionWithYourFrame = new Actions(wd);
        actionWithYourFrame.moveToElement(myframe).build().perform();
        myframe.click();
    //    wd.switchTo().frame(wd.findElement(By.xpath("//*[@id=\"fssarmiframe\"]")));
     //   wd.switchTo().frame("fssarmiframe");
   //     wd.switchTo().frame(0);



        //  wd.findElement(By.xpath("//*[@id=\"ext-element-77\"]/div[3]")).click();
                                                     //div[@id='ext-element-88']//div[3]

        WebElement admflk = wd.findElement(By.xpath("//div[@id='ext-element-88']//div[3]"));
      //  WebElement admflk = wd.findElement(By.xpath("//div[@id='ext-element-88']//div[@id='ext-element-106']"));


        Actions actionAdmFlk = new Actions(wd);
        actionAdmFlk.moveToElement(admflk).build().perform();
        admflk.click();



        Thread.sleep(3000);
        Thread.sleep(3000);
        wd.findElement(By.id("ext-element-79")).click();
        Thread.sleep(3000);
        Thread.sleep(3000);
        wd.findElement(By.id("button-1323-btnInnerEl")).click();

    }

Прикрепленные файлы


  • 0

#2 TatyanaV

TatyanaV

    Опытный участник

  • Members
  • PipPipPipPip
  • 383 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 17 Январь 2019 - 07:36

У Вас на скрине - только элемент, который Вы хотите кликнуть, плюс скриншот тэга со скриптом, а как выглядит тэг самого фрейма?


  • 0

#3 bent533serg

bent533serg

    Новый участник

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Sergio

Отправлено 17 Январь 2019 - 08:01

Если правильно вас понял тег iframe

 

Прикрепленные файлы


  • 0

#4 bent533serg

bent533serg

    Новый участник

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Sergio

Отправлено 17 Январь 2019 - 08:02

У Вас на скрине - только элемент, который Вы хотите кликнуть, плюс скриншот тэга со скриптом, а как выглядит тэг самого фрейма?

Если правильно понял - тег iframe

Прикрепленные файлы


  • 0

#5 TatyanaV

TatyanaV

    Опытный участник

  • Members
  • PipPipPipPip
  • 383 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 17 Январь 2019 - 13:14

wd.switchTo().defaultContent().switchTo.frame("fssarmiframe") - не помогает?

Насколько я понимаю, у Вас падает уже на следующем шаге, само переключение проходит.

 

С каким конкретно эксепшеном падает скрипт и как Вы определили, что локатор верный?

Учитывая, что у вас там цифры в айдишниках - то, что его Каталон в таком виде нашел ещё не гарантирует, что этот локатор 100% верный (цифры теоретически могут поменяться + Вы ссылаетесь на //div[3], а структура также могла поменяться и тогда Ваш элемент уже не div[3], а div[4], к примеру).

 

Есть ли у Вас контакт с разработчиками? При таком ужасе с атрибутами элементов (с точки зрения автоматизации, не разработки) - чаще всего лучше попытаться договориться с разработчиками о создании фиксированных айдишников на нужных Вам элементах.

 

У Вас есть на пунктах атрибут "data-recordid" - эти айдишники рандомные или соответствуют Вашей БД? 

К примеру, в кусочке кода дерева есть элемент с айдишником ext-element-88. Если data-recordid не рандомное, а фиксированное - его можно было бы найти как "[data-recordid=43] .x-treelist-item-wrap" (ну или "//*[@data-recordid=43]//*[@class='x-treelist-item-wrap']".

Локатор был бы привязан к чему-то более фиксированному и неизменяемому.

Повторюсь - это все только в том случае, если data-recordid - это неизменяемый айдишник (к примеру, записи в БД).

 

п.с.: а вообще, всегда остается вариант с дебаггом. Доходите до поставленного Вами брейкпоинта, нажимаете в браузере ф12 и пробуете найти элемент по указанному локатору - есть ли но на самом деле или нет.


  • 0


Программирование на С# для тестировщиков
онлайн
Автоматизатор мобильных приложений
онлайн
Selenium WebDriver: полное руководство
онлайн
Программирование на Python для тестировщиков
онлайн




Темы с аналогичным тегами selenium, java

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Яндекс.Метрика
Реклама на портале