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

Фотография

Локатор для кнопки попапа с динамическим ID


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

#1 kramberg

kramberg

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

  • Members
  • Pip
  • 12 сообщений


Отправлено 14 апреля 2016 - 12:38

Просьба помочь новичку, второй день уже гуглю, но корректного решения не нахожу. Есть попап с динамическим ID, на нём кнопка, пытаюсь подобрать локатор.
 

<div id="popup61930710207272240000Box" class="content grey" style="display: block; left: 50%; ; top: 50px;">
 
   <div id="popup61930710207272240000Header" class="columnControl header">
 
   <div id="popup61930710207272240000Window" class="window" style="width: 550px; height: auto; overflow-y: auto;">
 
   <div id="popup61930710207272240000Buttons" class="buttons">
      <button id="button82450428825786370000">ОК</button>
      <button id="button108432280120445290000">Отмена</button>
   </div>
</div>
 
Нужно кликнуть по кнопке "ОК"

Пробовал вот такого типа:

//div[12]/div[2]/div[3]/button

Но div постоянно меняется и локатор в итоге не работает.
 
так же пробовал вот такой вариант:

//button[contains(text(),'ОК')] но xpath показывает что таких элемента 3 (видимо есть скрытые) и локатор так же не срабатывает на нужной кнопке. Подозреваю нужно совместить class и contains text, но корректный синтаксис не смог накопать такого локатора.


 

  • 0

#2 Freiman

Freiman

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 591 сообщений
  • ФИО:Андрей Адеркин
  • Город:Йошкар-Ола

Отправлено 14 апреля 2016 - 12:50

А нельзя просто подойти к разработчикам и попросить сделать статический id?
Сейчас вы тратите много времени на борьбу в искусственно созданными сложностями
  • 0

#3 kramberg

kramberg

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

  • Members
  • Pip
  • 12 сообщений


Отправлено 14 апреля 2016 - 12:56

Подходил, ответили примерно :"Ну блин да, но сейчас на полгода вперёд, спринты, распланировано, все дела". Так что приходиться работать с тем, что есть. В данный момент в принципе уже приноровился, но вот конкретно этот случай не поддаётся.


  • 0

#4 Freiman

Freiman

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 591 сообщений
  • ФИО:Андрей Адеркин
  • Город:Йошкар-Ола

Отправлено 14 апреля 2016 - 13:03

Идите к менеджеру и жалуйтесь, что из-за лени разработчиков лично вы теряете время, а компания - деньги.
Не думаю, что начать впиливать везде id-шники - это такая уж непосильная задача
  • 0

#5 DennisM

DennisM

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

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Dennis M
  • Город:Ralegh NC, USA

Отправлено 14 апреля 2016 - 13:16

Нефиг тут бюрократию ворошить. Хуже будет!
 
Вот несколько примеров:
 

//div[contains(@id, 'popup') AND @class="buttons"]/button[text()='OK']

//div[@class="buttons"]/button[text()='OK']

//div[@class="buttons"]/button[1]


  • 0

#6 Freiman

Freiman

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 591 сообщений
  • ФИО:Андрей Адеркин
  • Город:Йошкар-Ола

Отправлено 14 апреля 2016 - 13:24

Нефиг тут бюрократию ворошить. Хуже будет!

Окей, продолжаем увлекательный забег по граблям :)
  • 0

#7 DennisM

DennisM

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

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Dennis M
  • Город:Ralegh NC, USA

Отправлено 14 апреля 2016 - 13:38

 

Нефиг тут бюрократию ворошить. Хуже будет!

Окей, продолжаем увлекательный забег по граблям :)

 

У меня на проекте нет вообще id и всё работает норм. Те кто требуют id или неопытные или ленивые... ;)


  • 0

#8 kramberg

kramberg

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

  • Members
  • Pip
  • 12 сообщений


Отправлено 14 апреля 2016 - 13:41

 

Нефиг тут бюрократию ворошить. Хуже будет!
 
Вот несколько примеров:
 

//div[contains(@id, 'popup') AND @class="buttons"]/button[text()='OK']

//div[@class="buttons"]/button[text()='OK']

//div[@class="buttons"]/button[1]

 

Спасибо за примеры! По всем 3-м к сожалению находится ещё 3-5 вариантов, соответственно локатор ссылается не на то что нужно. Пока честно говоря не знаю что делать, т.к. сроки есть, а разумным решением видится действительно продавливание разработчиков в сторону статичных id


  • 0

#9 DennisM

DennisM

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

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Dennis M
  • Город:Ralegh NC, USA

Отправлено 14 апреля 2016 - 13:47

 

 

Нефиг тут бюрократию ворошить. Хуже будет!
 
Вот несколько примеров:
 

//div[contains(@id, 'popup') AND @class="buttons"]/button[text()='OK']

//div[@class="buttons"]/button[text()='OK']

//div[@class="buttons"]/button[1]

 

Спасибо за примеры! По всем 3-м к сожалению находится ещё 3-5 вариантов, соответственно локатор ссылается не на то что нужно. Пока честно говоря не знаю что делать, т.к. сроки есть, а разумным решением видится действительно продавливание разработчиков в сторону статичных id

 

я не вижу кода всей страницы. Можно было бы сочинить что-нибудь точнее.


  • 0

#10 DennisM

DennisM

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

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Dennis M
  • Город:Ralegh NC, USA

Отправлено 14 апреля 2016 - 13:52

Вполне может быть что у тебя в коде несколько окон и на данный момент теста только одно видимое. Добавляем условие contains(@style, 'display: block')

 

//div[contains(@id, 'popup') AND contains(@style, 'display: block')]//div[@class="buttons"]/button[text()='OK']


  • 0

#11 kramberg

kramberg

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

  • Members
  • Pip
  • 12 сообщений


Отправлено 14 апреля 2016 - 13:56

Вполне может быть что у тебя в коде несколько окон и на данный момент теста только одно видимое. Добавляем условие contains(@style, 'display: block')

 

//div[contains(@id, 'popup') AND contains(@style, 'display: block')]//div[@class="buttons"]/button[text()='OK']

FirePath указывает верно, но Selenium IDE не находит. Но это уже огромный прогресс и мысль ясна! Большое спасибо.


  • 0

#12 Zakeshi

Zakeshi

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

  • Members
  • Pip
  • 12 сообщений
  • ФИО:Александр
  • Город:Запорожье


Отправлено 30 мая 2016 - 16:05

 
так же пробовал вот такой вариант:

//button[contains(text(),'ОК')] но xpath показывает что таких элемента 3 (видимо есть скрытые) и локатор так же не срабатывает на нужной кнопке. Подозреваю нужно совместить class и contains text, но корректный синтаксис не смог накопать такого локатора.


 

 

 

(//button[contains(text(),'ОК')])[№] - вместо № подобрать нужную кнопку 


  • 0

#13 Little_CJIOH

Little_CJIOH

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 515 сообщений
  • ФИО:Власкин Павел
  • Город:Санкт-Петербург


Отправлено 30 мая 2016 - 16:45

Ооооооо... великие костыляторы.

Вот добавят вам очередную кнопку в интерфейс и вас этими костылями завалит.

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


  • 0

#14 clipsa

clipsa

    Специалист

  • Members
  • PipPipPipPipPip
  • 527 сообщений
  • ФИО:Ермолаева Ольга
  • Город:Москва


Отправлено 02 июня 2016 - 09:21

Ооооооо... великие костыляторы.

Вот добавят вам очередную кнопку в интерфейс и вас этими костылями завалит.

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

В некоторых случаях (видимо тут не такой :) ) разработчики не могут сделать статические айдишники и приходится выкручиваться :)

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

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


  • 0

Не следует заставлять тестировщиков тестировать быстрее. Что может быть хуже испуганных, усталых, цинично настроенных тестировщиков?
-----------------
Хорошо, когда человек заводит баги. Плохо, когда баги заводят человека (с)
-----------------
Проект для начинающих тестировщиков Хомячки


#15 Little_CJIOH

Little_CJIOH

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 515 сообщений
  • ФИО:Власкин Павел
  • Город:Санкт-Петербург


Отправлено 02 июня 2016 - 10:05

смысловые суффиксы и префиксы для динамических id никто не отменял.


  • 0

#16 DennisM

DennisM

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

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Dennis M
  • Город:Ralegh NC, USA

Отправлено 02 июня 2016 - 13:36

Вот что лень делает с тестировщиками... ID еще подавай с голубой каемочкой. Девелоперам без вас хватает мозготр!@%а. ;)


  • 0


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

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