Прокрутка внутри формы в Watir - PullRequest
0 голосов
/ 15 ноября 2018

Я запускаю тест в веб-приложении, используя Ruby-Watir-Rspec. Это очень просто, так как я начинающий. Я открываю форму и вводю необходимую информацию, но кнопка «Создать» не находится в видимой области, поэтому я получаю сообщение:

Failure/Error: @browser.button(class: xxx).click

     Watir::Exception::UnknownObjectException:
       element located, but timed out after 30 seconds, waiting for #<Watir::Button: located: true; {:class=>xxx, :tag_name=>"button"}> to be present

Caused by:
     # Selenium::WebDriver::Error::ElementNotVisibleError:
     #   element not interactable

Если я прокручиваю во время работы скрипта, он нажимает на кнопку, и тест проходит успешно. Я пробовал scroll.to, wait_until_present, прокручивал до координат, scroll_into_view, ни один из них не работал. Единственный способ заставить его работать - несколько раз поместить "@ browser.send_keys: tab", пока он не достигнет кнопки внизу формы.

Я полагаю, что проблема в том, что кнопка находится внутри формы , которая не занимает всю страницу (за формой находится карта, поэтому у части страницы нет опции прокрутки). .so есть ли способ прокрутки внутри формы? Или вы знаете какой-то другой подход к поиску этой кнопки? Любая подсказка приветствуется.
Кстати, страница развернута.

Вот фрагмент кода, просто:

it 'should create the place' do
    @browser.button(class: xxx).click
end

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Я предполагаю, что это настраиваемый прокручиваемый элемент, который скрывает содержимое в стиле overflow: hidden. Элементы в переполнении не считаются видимыми / присутствующими. Когда вы прокручиваете вручную, вы выводите элемент из переполнения, чтобы он присутствовал.

Я видел пару таких в прошлом. Каждый из них нуждался в особом подходе к прокрутке. Без точного HTML / CSS трудно сказать, как прокрутить элемент.

Однако, если вы не пытаетесь проверить прокрутку, вы можете вручную запустить событие щелчка. Это обойдет требования к видимости:

@browser.button(class: xxx).click!
0 голосов
/ 16 ноября 2018

Попробуйте использовать драгоценный камень Watir Scroll: https://github.com/p0deje/watir-scroll и прокрутить элемент до центра области просмотра: button.scroll.to :center.

Вы также можете отправить форму напрямую @browser.form.submit

...