1

私のWebサイトで基本的なログインテストケースを実行するためにwatirヘッドレスを使用しています。私のマシン (通常の dev Linux マシン) からは問題なく動作しますが、ヘッドレス Linux サーバー (firefox を使用) では次のエラーで失敗します。

脚本:

返信ありがとうございます。when_present を使用してみましたが、true とスクリプトのタイムアウトは返されません。このスクリプトは、ui を備えた Linux 開発マシンでは正常に動作しますが、Linux サーバーでは「browser.text_field(:name, "memberForm.memberpassword").set("password")」で失敗します。

スクリプトは次のとおりです。

require 'rubygems'
require 'watir'
require 'watir-webdriver'
require 'headless'

headless = Headless.new
headless.start
begin
browser = Watir::Browser.start 'http://127.0.0.1:8080/login'
browser.text_field(:name, "memberForm.memberemail").set("tester")
puts browser.text_field(:name, "memberForm.memberpassword")
browser.text_field(:name, "memberForm.memberpassword").set("password")
browser.button(:id, "login-button").click
puts browser.text
if(resultText.include?'Error Message')
   puts 'login failed'  
else
  puts 'success'
end

rescue => e
    puts e.message
    p e.backtrace
ensure
    browser.close
    headless.destroy
end

エラーは次のとおりです。

 [remote server] file:///tmp/webdriver-profile20121231-18379-1ad5l77/extensions/fxdriver@googlecode.com/components/command_processor.js:6771:in `unknown': Element is not currently visible and so may not be interacted with (Selenium::WebDriver::Error::ElementNotVisibleError)

HTML は次のとおりです。

<div class="row">
 <fieldset id="login-form-fieldset">

             <div class="clearfix">
                 <input class="span5"
                        id="memberForm_memberemail_id"
                        name="memberForm.memberemail"
                        type="text"                        
                        value="<gs:property value="memberForm.memberemail" escape="false"/>"/>
             </div>

             <div class="clearfix">
                 <input class="span5"
                        id="memberForm_memberpassword_id"
                        name="memberForm.memberpassword"
                        type="password"
                        placeholder="Password" />
             </div>

             <gs:token />

            <div class="clearfix">
                <button type="submit" id="login-button" class="btn btn-large btn-primary">Login</button>

                <div class="pull-right" style="margin-top: 10px;">
                    Forgot Password? <a href="<gs:url action="forgot-password" namespace="/" />">Click here</a>
                </div>
            </div>

        </fieldset>
</div>

ヘッドレス Linux サーバーで何が問題なのかわかりませんか? パスワード フィールドに値を設定しようとしないと、問題なく動作し、[パスワードを忘れた場合] ページに移動します。

4

1 に答える 1

1

エラーメッセージは言うElement is not currently visible and so may not be interacted with。マシンではなく、スクリプトに問題があるようです。スクリプトが要素と対話しようとすると、要素は表示されません。

要素を待機する方法に関するドキュメントがあります: http://watirwebdriver.com/waiting/

関連するコードを提供すると、誰かがもっと知ることができます。

于 2013-01-02T09:19:52.950 に答える