Можно ли глобально увеличить Watir-WebDriver when_present время ожидания?

голоса
5

Я пишу автоматизированную программу тестирования, которая будет тестировать некоторые веб-программы, которые иногда медленно загружаются определенные вызовы AJAX. Например пользователь нажмет «запрос», который приведет к загрузке «» наложения HTML для где-нибудь от 15 до 90 секунд. Когда поиск завершится, она будет затем обновить таблицу на одной странице с результатами.

Таким образом, очевидно, что я могу увеличить время ожидания по отдельности, так как:

browser.td(:id => 'someId').when_present.some_action #=> will wait 30 seconds
browser.td(:id => 'someId').when_present(90).some_action #=> will wait *90* seconds

Но есть способ изменить (в моем случае увеличения) время так Watir-WebDriver всегда ждет 90 секунд на .when_presentпримерно так:

browser.some_default = 90
browser.td(:id => 'someId').when_present.some_action #=> will wait *90* seconds

Несколько слов предупреждения: тайм - аут клиента не повлияет when_present . Не будет неявным ждать .

Задан 15/11/2013 в 04:30
пользователем
На других языках...                            


1 ответов

голоса
9

Обновление : Эта обезьяна патч были объединены в Watir-WebDriver и так больше не будет необходимости в Watir-WebDriver v0.6.5. Вы сможете установить тайм - аут , используя:

Watir.default_timeout = 90

Эти методы ожидания определяются аналогичны:

def when_present(timeout = 30)
  message = "waiting for #{selector_string} to become present"

  if block_given?
    Watir::Wait.until(timeout, message) { present? }
    yield self
  else
    WhenPresentDecorator.new(self, timeout, message)
  end
end

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

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

require 'watir-webdriver'
module Watir

  # Can be changed within a script with Watir.default_wait_time = 30    
  @default_wait_time = 90  
  class << self
    attr_accessor :default_wait_time    
  end

  module Wait

    class << self
      alias old_until until
      def until(timeout = Watir.default_wait_time, message = nil, &block)
        old_until(timeout, message, &block)
      end

      alias old_while while
      def while(timeout = Watir.default_wait_time, message = nil, &block)
        old_while(timeout, message, &block)
      end

    end # self
  end # Wait

  module EventuallyPresent

    alias old_when_present when_present
    def when_present(timeout = Watir.default_wait_time, &block)
      old_when_present(timeout, &block)
    end

    alias old_wait_until_present wait_until_present
    def wait_until_present(timeout = Watir.default_wait_time)
      old_wait_until_present(timeout)
    end

    alias old_wait_while_present wait_while_present
    def wait_while_present(timeout = Watir.default_wait_time)
      old_wait_while_present(timeout)
    end

  end # EventuallyPresent
end # Watir

Включите патч после загрузки кода Watir WebDriver.

Ответил 15/11/2013 в 12:17
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more