0

ログインフォームをテストするこの簡単なテストケースがあります。何らかの理由で、webdriver がテストの実行を拒否し、「リダイレクトが多すぎます」というメッセージが返されます。このページはごく普通のログイン画面で、非常にシンプルで、リダイレクトは一切ありません。サーバーからページへのアクセスは問題ないようです。

CentOS サーバーで selenium-webdriver-2.25.0 を使用しています。

エラーメッセージの下:

(...)

[WARNING] MultiJson is using the default adapter (ok_json). We recommend loading a different JSON library to improve performance.
EE
Finished in 0.206445 seconds.

1) Error: test_login(Login):
Selenium::WebDriver::Error::WebDriverError: too many redirects
/usr/lib/ruby/gems/1.8/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/default.rb:62:in `request'
/usr/lib/ruby/gems/1.8/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/default.rb:63:in `request'
/usr/lib/ruby/gems/1.8/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/common.rb:40:in `call'

(...)

私のコード:

require "rubygems"
require "selenium-webdriver"
require "test/unit"

class Login < Test::Unit::TestCase

  def setup
    @driver =Selenium::WebDriver.for(:remote, :url => "http://selenium.server.com/wd/hub")
    @base_url = "http://www.myservice.com"
    @driver.manage.timeouts.implicit_wait = 30
    @verification_errors = []
  end

  def teardown
    @driver.quit
    assert_equal [], @verification_errors
  end

  def test_login
    @driver.get(@base_url + "/login/")
    @driver.find_element(:id, "username").clear
    @driver.find_element(:id, "username").send_keys "user@server"
    @driver.find_element(:id, "password").clear
    @driver.find_element(:id, "password").send_keys "mykeys!"
    @driver.find_element(:xpath, "//input[@value='Login']").click
    verify { assert element_present?(:link, "Logout") }
    verify { assert element_present?(:link, "Settings") }
    verify { assert element_present?(:link, "Products") }
  end

  def element_present?(how, what)
    @driver.find_element(how, what)
    true
  rescue Selenium::WebDriver::Error::NoSuchElementError
    false
  end

  def verify(&blk)
    yield
  rescue Test::Unit::AssertionFailedError => ex
    @verificatiohttp://jenkins.dev.emesa-auctions.com/cms/n_errors << ex
  end
end

アップデート

「ベースURL」にどのURLを使用しても、エラーが発生し続けるようです。

4

1 に答える 1

0

私はこの問題を自分で解決することができました。問題は、内部 LAN URL (ファイアウォールをバイパスする) ではなく、公開 URL (selenium.server.com) を介してサーバーにアクセスしていたことです。

それを変更すると、問題が修正されました。

于 2012-09-12T14:07:34.363 に答える