Хобрук: Ваш путь к мастерству в программировании

setSpeed ​​​​в Selenium WebDriver с использованием Ruby

Есть ли способ установить скорость выполнения Selenium Webdriver в ruby.

В perl для селена 1(RC) было $sel->set_speed("500");

Но из-за некоторых ограничений Selenium RC мне пришлось перейти на Selenium Webdriver и начать использовать Ruby, и я не могу найти соответствующую функцию.

Где-то читал параметры «Медленный», «Средний» и «Быстрый» в качестве аргументов для установки скорости в C# и Perl, но не в Ruby.

Примечание. У меня есть тайм-ауты, установленные с этим @driver.manage.timeouts.implicit_wait = 30, но я ищу скорость выполнения.


Ответы:


1

Некоторое время назад методы установки скорости выполнения в WebDriver устарели для всех языковых привязок. Больше невозможно изменить скорость выполнения работающего кода WebDriver.

22.12.2011
  • Итак, как лучше всего решить проблему, когда при нажатии на ссылку открывается всплывающее окно, и мне нужно отправить ключи в текстовое поле в этом всплывающем окне. Всплывающее окно иногда загружается дольше, из-за чего find_element этого идентификатора текстового поля не работает, даже если оно появляется. Я думаю, что попытка поиска идентификатора элемента начинается немедленно, и хотя всплывающее окно загружается задолго до 30 секунд (мой явный тайм-аут), сценарии завершаются ошибкой. 22.12.2011
  • Вам нужна какая-то явная процедура ожидания; неявные ожидания могут вам здесь не помочь. В языках, поддерживаемых непосредственно проектом (Java, .NET, Ruby, Python), это можно сделать с помощью класса WebDriverWait (или его эквивалента). Кроме того, ответ немного зависит от того, что вы подразумеваете под всплывающим окном. Это новое окно браузера? Если это так, вам нужно будет использовать driver.switch_to.window(), чтобы сосредоточить внимание в правильном контексте. Если это всплывающее окно, созданное, скажем, фреймворком виджетов JavaScript, таким как jQuery или подобным, ваш find_element в вашей процедуре ожидания. 22.12.2011
  • Таким образом, это новое всплывающее окно, авторизация входа в систему, чтобы быть более точным. И я перемещаю элементы управления в новое окно, используя handles = @driver.window_handles @driver.switch_to.window(handles[1])... но происходит следующее... на самом деле всплывающее окно, во время которого происходит сбой переключения в окно, и все шаги там явно терпят неудачу. В настоящее время я установил .. сон на 2 секунды (между нажатием на ссылку и ожиданием переключения в новое окно). Но я уверен, что есть лучший способ. 22.12.2011
  • Да, есть. Вы работаете в Ruby, поэтому вам нужно использовать объект Selenium::WebDriver::Wait и дождаться, когда @driver.window_handles.size станет › 1. Затем вы можете продолжить и переключиться на новое окно. Вы можете увидеть пример этого в вики проекта. Имейте в виду, однако, что дескрипторы, возвращаемые driver.window_handles, не обязательно будут в том порядке, в котором они были открыты для каждого браузера, поэтому вы не можете обязательно полагаться на то, что вы просто возьмете driver.window_handles[1] и ожидаете, что это будет новая оконная ручка. 23.12.2011

  • 2

    Согласно http://selenium.googlecode.com/svn/tags/selenium-2.10.0/rb/lib/selenium/client/idiomatic.rb в модуле Selenium.Client.Idiomatic есть 2 метода:

      # Get execution delay in milliseconds, i.e. a pause delay following 
      # each selenium operation. By default, there is no such delay 
      # (value is 0).
      def execution_delay
        string_command "getSpeed"
      end
    
      # Set the execution delay in milliseconds, i.e. a pause delay following
      # each selenium operation. By default, there is no such delay.
      #
      # Setting an execution can be useful to troubleshoot or capture videos
      def execution_delay=(delay_in_milliseconds)
        remote_control_command "setSpeed", [delay_in_milliseconds]
      end
    

    Я полагаю, это поможет.

    21.12.2011
  • Нет, это не работает, эти функции являются частью модуля Selenium Client Idiomatic, который не входит в модуль Webdriver? Я думаю. 21.12.2011
  • Это ошибка, которую я получаю между прочим NoMethodError: undefined method execution_delay' для #‹Selenium::WebDriver::Driver:0x101534678›` 21.12.2011
  • Новые материалы

    Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
    каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

    Как настроить Selenium в проекте Angular
    Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

    Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
    Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

    Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
    Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

    стройный-i18следующий
    Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..