0

以下の html コードの正しい xpath を見つけようとしていますが、何度も試行錯誤し、問題に 3 日間費やした後、あきらめて助けが必要です。記録 (コードの実行) 後に IDE から確認すると、accountID という名前の webeditbox が正しく識別されますが、テスト スクリプトを実行すると書き込みに失敗します。iframe 内にあり、多くのクラスと div ボックス内にあることに注意してください。

IDE: Eclipse Juno ブラウザー: FireFox Selenium 2 Webdriver

Web 編集ボックスを識別する HTML コード: <input id="accountId" name="accountId" class="text" type="text" value="" maxlength="10">

使用される Selenium コード:

1)WebElement AccountID = driver.findElement(By.xpath("//[@id='accountId']")); AccountID.sendKeys("1234");

2)同様に//*[@id="customPMform"]/p/label

3)同様に//*[@id="customPMform"]/p

私も試してみby.idましたが、利益はありません。正しいセレンコードを教えてください。

その他の HTML コード:

<div class="portlet-borderless-container" style=""> 
    <form id="customPMform" action="https://webcashier-stg1.egalacoral.com/web/galabingostg1-backup/prepaidcard?p_p_id=prePaidCardDeposit_WAR_prePaidCardbaseVersion60610_INSTANCE_Jl3g&amp;p_p_lifecycle=1&amp;p_p_state=normal&amp;p_p_mode=view&amp;p_p_col_id=column-1&amp;p_p_col_count=2&amp;_prePaidCardDeposit_WAR_prePaidCardbaseVersion60610_INSTANCE_Jl3g_action=submit" method="POST" onsubmit="return false;"> 
        <input id="methodCode" name="methodCode" type="hidden" value="PrePaidCard"> 
        <input id="depositSuccessUrl" name="depositSuccessUrl" type="hidden" value="/ppcdepositsuccess"> 
        <input id="quickSuccessUrl" name="quickSuccessUrl" type="hidden" value="/ppcquickdepositsuccess"> 
        <h2><span class="text-msg" name="prePaidCardDeposit.title">PrePaid Card</span></h2> 
        <p class="form"> 
            <label for="accountId">
                <span class="text-msg" name="prePaidCardDeposit.accountId">Account ID</span>
            </label>
            <input id="accountId" name="accountId" class="text" type="text" value="" maxlength="10"> 
        </p> 
    </form>  
</div>
4

6 に答える 6

1

By.xpath("//input[@id='accountId']")正しい要素を選択できるようにする必要があります

//[@id='accountId']タグを指定しておらず、上記のように修正できます

//*[@id="customPMform"]/p/labelラベルを選択すると、ラベル要素にキーを送信できません

//*[@id="customPMform"]/p要素を選択し<p>ます。上と同じこと

于 2013-02-19T16:27:14.063 に答える
0

フレームは個別のページとして処理する必要があり、フレームのWeb要素を見つけて使用する前に、そのフレームに切り替える必要があります。

良い習慣として、開発者は事前にページで使用されているフレーム、フラッシュ要素、アプレットの数を教えておく必要があります。

于 2013-03-16T14:56:27.817 に答える
0

iframeにある場合は、その中の要素にアクセスする前に、コントロールを iframe に切り替える必要があります。

driver.switchTo().frame("frameName/Id/index");
driver.findElement(By.id("accountId")).sendKeys("1234");
于 2013-02-19T16:53:50.927 に答える
0

name="cardNumber" のフィールドを検索する同様の問題がありました。セレンが見つけられないようにするフィールド名マスクがいくつかあると思います。

私の場合の回避策は、絶対位置を使用することでした。問題の次の可能性があります。

//form[@id='customPMform']//input[4]
于 2013-02-28T12:03:38.843 に答える
0

firebug では、要素を右クリックして [XPath のコピー] を選択すると、探しているものが得られる場合があります。

于 2013-02-19T20:17:22.003 に答える
0

最善の方法は、selenium ide を使用して xpath を見つけ、それをコードにコピーすることです。複数の入力がある場合があり、firebug を使用すると正しい xpath が得られない場合があるためです。(例: firebug を使用すると、生成される xpath は .// [@id='title'] になる可能性がありますが、Selenium ide を使用してキャプチャすると (.// [@id='title'])[2] になる可能性があります)。絶対 xpath を生成して試すこともできます。

于 2013-03-29T11:26:59.683 に答える