1

ベンダーが開発したWebページ(SAP BusinessObjects InfoViewログインページ)を使用しており、ページ上のドロップダウン要素を識別して選択しようとしています。何をしようとしても、例外が発生します。

require 'watir-webdriver'
ie = Watir::Browser.new
ie.goto "http://svr-boj-bop-01.mgc.mentorg.com:8080/InfoViewApp"
ie.select_list(:id, "authenticationSelectBox").select("secLDAP")
#=> 'error: "unable to locate element, using :id=>"authenticationSelectBox", :tag_name=>"select"....'

FireFoxとFirebugをインストールしています。Firebugを使用して、要素に関する情報を提供する要素を選択できます。:id、:name、.div、.browser、.frame、...を指定しようとしましたが、エラーは何も変わりません。「認証」の選択に基づいて、内側のフレームが動的にページを作成しているのではないかと疑っていますが、その場合の確認/検証方法がわかりません。

私はサイトでほとんどの提案を検索して試しましたが、何も役に立ちません。

このページには、Javaコード、フォームなどがたくさんあります。これは、要素を検索しようとしているページからの抜粋です。

<body onload="logonPageLoad()">
    <div class="logonContainer">
        <div class="logonIFrame">
            <iframe id="infoView_home" width="80%" frameborder="0" align="center" title="Log On to InfoView" name="infoView_home" onload="resizeFrameToContent("infoView_home")" src="jsp/listing/blank.jsp" style="height: 287px;">
                <html class="logon_body">
                    <body class="logon_body" onload="loadInit();">
                        <div class="logon_body">
                            <div id="logonCredentials">
                                <form action="../../../PartnerPlatformService/service/app/logon.object" method="POST" name="logonForm">
                                    <div class="logon_table">
                                        <div id="authentication" class="logon_input">
                                            <label class="logon_input_label" onclick="businessobjects.webutil.accessibility.setFocusOnElement('authenticationSelectBox'); return false;" tabindex="-1" for="authenticationSelectBox"> Authentication: < /label>
                                            <select id="authenticationSelectBox" class="logonSelectBox" onchange="SetAuthType(false);resizeFrameToContent('infoView_home')" name="authType">
                                                <option value="secEnterprise" selected=""> Enterprise `</option>
                                                <option value="secLDAP"> LDAP </option>
                                                <option value="secWinAD"> Windows AD </option>
                                                <option value="secSAPR3"> SAP</option>
                                            </select>
4

1 に答える 1

2

フレーム内の要素の場合、フレームを明示的に呼び出す必要があります。

my_frame = ie.frame(:id, "infoView_home")
my_frame.select_list(:id, "authenticationSelectBox").select("secLDAP")

あなたはすでにそれを試したかもしれないように聞こえますが。Watirがページがロードされたと見なす前に、要素がロードされていない可能性があります。その場合は、when_presentメソッドのようなものを使用して待機を追加できます。

my_frame = ie.frame(:id, "infoView_home")
my_frame.select_list(:id, "authenticationSelectBox").when_present.select("secLDAP")

1行で実行できることに注意してください(つまり、は必要ありませんmy_frame)。読みやすくするために追加されただけです(つまり、水平スクロールを最小限に抑えます)。

于 2012-10-11T16:24:01.567 に答える