Как я могу автоматизировать слайдер с помощью watir-webdriver и ruby? - PullRequest
2 голосов
/ 16 ноября 2011

Я пытаюсь автоматизировать слайдер JQuery UI, используя watir-webdriver и ruby, но мне не везет. Я хочу иметь возможность манипулировать ползунком для увеличения или уменьшения значения. Я искал везде и спросил несколько моих коллег, но ни у кого нет ответа. Я прилагаю кусок HTML-кода для слайдера. Любая помощь будет высоко ценится.

URL-ссылка: http://www.whatcar.com/new-car-deals/ (слайдер ценового диапазона)

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

Ответы [ 4 ]

1 голос
/ 16 ноября 2011

это виджет Jquery, который появляется (просматривая сценарии), чтобы реагировать на нажатия клавиш после нажатия на одну из ручек.дескрипторы являются объектами ссылки, внутри пары div, внешняя имеет значение идентификатора 'slider-range'

Вы должны иметь возможность обращаться к ним через browser.div(:id => 'slider-range').link(:index => n), где n = 0 для левой иn = 1 для правой руки.

Сначала попробуйте вручную

  • Нажмите на левую ручку ползунка
  • Затем нажмите клавиши со стрелками на клавиатуре ... она переместится на 1 КБ (фунтов) вверхили вниз при каждом нажатии клавиши со стрелкой вправо или влево.
  • Как только вы переместили его вправо, нажмите клавишу Home, и он должен сброситься до своего минимального значения
  • Повторите выше для правой ручки, но верните его в крайнее правое положение с помощью клавиши End.

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

Повторите для левой ручки, установите его на левом конце с помощью клавиши home и переместите его с помощью клавиш со стрелками вправо

Сейчас у меня нет времени, чтобыэкспериментируйте дальше и разработайте точный сценарий, но я думаю, что вы, вероятно, могли бы создать две маленькие функции, даже если бы они принимали верхнее и нижнее значения диапазона и выполняли необходимое количество нажатий клавиш для перемещения нижнего значения с 5К до нужного значения и верхнего значения внизот 100k

Обратите внимание, что эта вещь очень сильно зависит от событий, она реагирует (по крайней мере, при просмотре инструментов разработчика во время игрыth) чтобы быть наведенным на mousedown, mouseup и т. д., если использование click не работает, чтобы «привлечь внимание» элемента управления, чтобы он реагировал на нажатия клавиш, попробуйте вместо этого использовать событие onmousedown.

Используя код из вашего ответа, чтобы переместить левый ползунок в 12K, я бы попробовал

browser.div(:id => 'slider-range').link(:index => 0).click  #make sure it has focus
browser.div(:id => 'slider-range').link(:index => 0).send_keys :home #set to 5K    
7.times do
   browser.div(:id => 'slider-range').link(:index => 0).send_keys :arrow_right
end 
0 голосов
/ 19 мая 2017

Чтобы добиться этого, используя Rspec и Watir-Webdriver с гемом Page-Object, я использовал:

div(:slider, id: "slider-range") #in page file
#then in spec file
browser.slider_element.input.send_keys :home

Этот ответ прибывает из http://watir.com/guides/special-keys/

0 голосов
/ 23 ноября 2014

Это сработало отлично. Мы просто добавили эти слайдеры на наш сайт, и моей первой мыслью было: «Как мы собираемся автоматизировать это!?»

Я хотел бы добавить в пример полный код, который доступен для публичного ознакомления людям. Следующее взаимодействует с примером на jqueryui.com.

require "watir-webdriver"
@browser = Watir::Browser.new :chrome
@browser.goto "http://jqueryui.com/slider/#default"
@browser.frame(:class => "demo-frame").span(:class =>"ui-slider-handle").click
@browser.frame(:class => "demo-frame").span(:class =>"ui-slider-handle").send_keys :home 
puts "clicked home"
7.times do
  @browser.frame(:class => "demo-frame").span(:class =>"ui-slider-handle").send_keys :arrow_right
end 
0 голосов
/ 17 ноября 2011

Большое спасибо, Чак. Я получил это работает. Вот скрипт, который я использовал:

@browser.link(:xpath, "/html/body/div/div[3]/div[4]/div/div/div/a").send_keys :arrow_right

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

...