Как понять, что файл был загружен с помощью Selenium и Ruby? - PullRequest
1 голос
/ 28 мая 2020

Я пишу свой первый сценарий автоматизации с помощью Selenium + Ruby, и мне нужно загрузить файл в веб-приложение. Дело в том, что загрузка занимает какое-то время (от 30сек c до 3мин, смотря как). После того, как файл был загружен, мне нужно нажать кнопку «Сохранить».

Как мой код мог распознать, что процесс загрузки был завершен, и он мог продолжить выполнение?

Вот стандартный код , просто для справки:

driver = Selenium::WebDriver.for :chrome
driver.navigate.to 'my-website.com/upload'

driver.find_element(id: 'upload-input').send_keys('my/path/to/the/document')
driver.find_element(id: 'upload-button').click

**Now my code needs to wait till upload will be completed and then to click "Save" button**

driver.find_element(id: 'save-button').click

Спасибо!

Ответы [ 2 ]

0 голосов
/ 28 мая 2020

Во-первых, не используйте слишком много Capybara / Selenium, даже если они классные и могут добавить некоторую ценность вашему проекту, они являются более хрупкой, капризной и медленной частью любого пакета TDD, и никогда не должно быть больше чем 10% всех ваших тестов. Очевидно, что использование его для тестирования загрузки файла является антипаттерном.

Вместо этого используйте запрос rspe c и javascript TDD lib (Jest / Enzyme) для тестирования новой функциональности. Нынешний протектор для проверки всего с помощью Capybara / Selenium безумен.

0 голосов
/ 28 мая 2020

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

Изменяется ли что-либо на сайте после того, как файл завершили загрузку? Может быть, появится значок или окно с надписью «загрузка завершена»?

Если да, вы можете использовать условное ожидание появления этого элемента!

Что-то вроде:

Selenium::WebDriver::Wait.new(timeout: 30).until {
  driver.find_element(id: 'upload-complete').displayed?
}

Вы захотите обернуть это в блок rescue вниз по строке, чтобы поймать крайние случаи, такие как элемент, который не существует, но, надеюсь, это поможет вам начать!

...