0

次の表を含むWebページがあります

Assessment name |       Task             |    Status

 Test A         | Practice               |  Not started

                | Assessment             |  Not started

Test B          | Practice               | Not started

                | Assessment             | Not started

そのためのhtmlコードも見つけてください。

<table class="gridRow" cellspacing="0" summary="For each assessment" style="border-collapse:collapse;">
    <tr>
        <th class="gridHeaderHide" scope="col">&nbsp;</th><th class="gridHeader" scope="col">Assessment name</th><th class="gridHeader" scope="col">Task</th><th class="gridHeader" scope="col">Status</th><th class="gridHeader" scope="col" abbr="Overall time you will need">Overall time you will need</th><th class="gridHeader" scope="col" abbr="Time limit">Time limit</th><th class="gridHeader" scope="col"><a tabindex="502" href="javascript:__doPostBack('ctl00$ErrorMessageContentPlaceHolder$gdvAssessmentHome','Sort$Deadline')">Deadline</a></th><th class="gridHeaderWhatUNeed" scope="col" abbr="What you need">What you need </th>
    </tr><tr class="gridRow" align="center">
        <td class="gridcolHide" rowspan="2">
                                <div style='display:none'>
                                    <img id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl02_imgCompleted" title="Completed" src="../Images/completed.gif" alt="Completed" style="border-width:0px;" />
                                </div>
                            </td><td class="gridcol" rowspan="2">
                                <span id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl02_lblCandidateFriendlyName">Test A</span>
                            </td><td class="gridcol">

                                <input type="submit" name="ctl00$ErrorMessageContentPlaceHolder$gdvAssessmentHome$ctl02$PracticeTask" value="Practice" id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl02_PracticeTask" tabindex="503" class="linkButton" />
                            </td><td class="gridcol">Not started</td><td class="gridcol">
                                15&nbsp;&nbsp;<span id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl02_lblMins1" class="label">Minutes</span>
                            </td><td class="centeredImage">
                                <div style='display:block'>
                                    <img id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl02_PractiseImage" src="../Images/AH_Transparent_Icon.gif" alt=" " style="border-width:0px;" />
                                </div>
                                <div style='display:none'>
                                    <img id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl02_imgClock" title="Timer on" src="../Images/timer_on.gif" alt="Timer on" style="border-width:0px;" />
                                    &nbsp;&nbsp;<span id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl02_lblMins" class="label">Minutes</span>
                                </div>
                                <div style='display:none'>
                                    <img id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl02_imgTimerPlusOn" title="Extra time allowed" src="../Images/Timer_plus.gif" alt="Extra time allowed" style="border-width:0px;" />
                                    &nbsp;&nbsp;<span id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl02_Label2" class="label">Minutes</span>
                                </div>
                                <div style='display:none'>
                                    <img id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl02_imgTimerOff" title="Timer off" src="../Images/Timer_plus.gif" alt="Timer off" style="border-width:0px;" />
                                    &nbsp;&nbsp;<span id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl02_Label1" class="label">Minutes</span>
                                </div>
                                <div style='display:none'>
                                    <img id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl02_imgTimerPlusOff" title="Extra time allowed" src="../Images/Timer_plus.gif" alt="Extra time allowed" style="border-width:0px;" />
                                    &nbsp;&nbsp;<span id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl02_Label3" class="label">Minutes</span>
                                </div>
                            </td><td class="gridcol" rowspan="2">21/03/2013</td><td class="gridcolWhatUNeed" rowspan="2">
                                <img id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl02_imgMouse" title="Mouse" src="../Images/Mouse.gif" alt="Mouse" style="border-width:0px;" />
                            </td>
    </tr><tr class="gridRow" align="center">
        <td class="gridcol">

                                <input type="submit" name="ctl00$ErrorMessageContentPlaceHolder$gdvAssessmentHome$ctl03$PracticeTask" value="Take assessment" id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl03_PracticeTask" tabindex="504" class="linkButton" />
                            </td><td class="gridcol">Not started</td><td class="gridcol">
                                30&nbsp;&nbsp;<span id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl03_lblMins1" class="label">Minutes</span>
                            </td><td class="centeredImage">
                                <div style='display:none'>
                                    <img id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl03_PractiseImage" src="../Images/AH_Transparent_Icon.gif" alt=" " style="border-width:0px;" />
                                </div>
                                <div style='display:block'>
                                    <img id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl03_imgClock" title="Timer on" src="../Images/timer_on.gif" alt="Timer on" style="border-width:0px;" />
                                    19&nbsp;&nbsp;<span id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl03_lblMins" class="label">Minutes</span>
                                </div>
                                <div style='display:none'>
                                    <img id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl03_imgTimerPlusOn" title="Extra time allowed" src="../Images/Timer_plus.gif" alt="Extra time allowed" style="border-width:0px;" />
                                    19&nbsp;&nbsp;<span id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl03_Label2" class="label">Minutes</span>
                                </div>
                                <div style='display:none'>
                                    <img id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl03_imgTimerOff" title="Timer off" src="../Images/Timer_plus.gif" alt="Timer off" style="border-width:0px;" />
                                    19&nbsp;&nbsp;<span id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl03_Label1" class="label">Minutes</span>
                                </div>
                                <div style='display:none'>
                                    <img id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl03_imgTimerPlusOff" title="Extra time allowed" src="../Images/Timer_plus.gif" alt="Extra time allowed" style="border-width:0px;" />
                                    19&nbsp;&nbsp;<span id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl03_Label3" class="label">Minutes</span>
                                </div>
                            </td>
    </tr><tr class="gridRow" align="center">
        <td class="gridcolHide" rowspan="2">
                                <div style='display:none'>
                                    <img id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl04_imgCompleted" title="Completed" src="../Images/completed.gif" alt="Completed" style="border-width:0px;" />
                                </div>
                            </td><td class="gridcol" rowspan="2">
                                <span id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl04_lblCandidateFriendlyName">Test B</span>
                            </td><td class="gridcol">

                                <input type="submit" name="ctl00$ErrorMessageContentPlaceHolder$gdvAssessmentHome$ctl04$PracticeTask" value="Practice" id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl04_PracticeTask" tabindex="505" class="linkButton" />
                            </td><td class="gridcol">Not started</td><td class="gridcol">
                                15&nbsp;&nbsp;<span id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl04_lblMins1" class="label">Minutes</span>
                            </td><td class="centeredImage">
                                <div style='display:block'>
                                    <img id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl04_PractiseImage" src="../Images/AH_Transparent_Icon.gif" alt=" " style="border-width:0px;" />
                                </div>
                                <div style='display:none'>
                                    <img id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl04_imgClock" title="Timer on" src="../Images/timer_on.gif" alt="Timer on" style="border-width:0px;" />
                                    &nbsp;&nbsp;<span id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl04_lblMins" class="label">Minutes</span>
                                </div>
                                <div style='display:none'>
                                    <img id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl04_imgTimerPlusOn" title="Extra time allowed" src="../Images/Timer_plus.gif" alt="Extra time allowed" style="border-width:0px;" />
                                    &nbsp;&nbsp;<span id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl04_Label2" class="label">Minutes</span>
                                </div>
                                <div style='display:none'>
                                    <img id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl04_imgTimerOff" title="Timer off" src="../Images/Timer_plus.gif" alt="Timer off" style="border-width:0px;" />
                                    &nbsp;&nbsp;<span id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl04_Label1" class="label">Minutes</span>
                                </div>
                                <div style='display:none'>
                                    <img id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl04_imgTimerPlusOff" title="Extra time allowed" src="../Images/Timer_plus.gif" alt="Extra time allowed" style="border-width:0px;" />
                                    &nbsp;&nbsp;<span id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl04_Label3" class="label">Minutes</span>
                                </div>
                            </td><td class="gridcol" rowspan="2">21/03/2013</td><td class="gridcolWhatUNeed" rowspan="2">
                                <img id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl04_imgMouse" title="Mouse" src="../Images/Mouse.gif" alt="Mouse" style="border-width:0px;" /><img id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl04_imgCalculator" title="Calculator" src="../Images/Calculator.gif" alt="Calculator" style="border-width:0px;" /><img id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl04_imgPaper" title="Pen and paper" src="../Images/pen_and_paper.gif" alt="Pen and paper" style="border-width:0px;" />
                            </td>
    </tr><tr class="gridRow" align="center">
        <td class="gridcol">

                                <input type="submit" name="ctl00$ErrorMessageContentPlaceHolder$gdvAssessmentHome$ctl05$PracticeTask" value="Take assessment" id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl05_PracticeTask" tabindex="506" class="linkButton" />
                            </td><td class="gridcol">Not started</td><td class="gridcol">
                                30&nbsp;&nbsp;<span id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl05_lblMins1" class="label">Minutes</span>
                            </td><td class="centeredImage">
                                <div style='display:none'>
                                    <img id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl05_PractiseImage" src="../Images/AH_Transparent_Icon.gif" alt=" " style="border-width:0px;" />
                                </div>
                                <div style='display:block'>
                                    <img id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl05_imgClock" title="Timer on" src="../Images/timer_on.gif" alt="Timer on" style="border-width:0px;" />
                                    25&nbsp;&nbsp;<span id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl05_lblMins" class="label">Minutes</span>
                                </div>
                                <div style='display:none'>
                                    <img id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl05_imgTimerPlusOn" title="Extra time allowed" src="../Images/Timer_plus.gif" alt="Extra time allowed" style="border-width:0px;" />
                                    25&nbsp;&nbsp;<span id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl05_Label2" class="label">Minutes</span>
                                </div>
                                <div style='display:none'>
                                    <img id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl05_imgTimerOff" title="Timer off" src="../Images/Timer_plus.gif" alt="Timer off" style="border-width:0px;" />
                                    25&nbsp;&nbsp;<span id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl05_Label1" class="label">Minutes</span>
                                </div>
                                <div style='display:none'>
                                    <img id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl05_imgTimerPlusOff" title="Extra time allowed" src="../Images/Timer_plus.gif" alt="Extra time allowed" style="border-width:0px;" />
                                    25&nbsp;&nbsp;<span id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl05_Label3" class="label">Minutes</span>
                                </div>
                            </td>
    </tr><tr class="gridRow" align="center">

テスト B - リンクの練習を clcik する必要があります。リンクが動的に読み込まれるため、次の xpath を使用してクリックしました

xpath=//*[contains(text(),'Test B')]/../../td[3]/input

これは特定の言語では機能しますが、Web ページの表示言語 (中国語など) を変更すると機能しません。

リンクをクリックする方法を教えてください。注: Web ページには、テスト B の行のみ、またはテスト A とテスト B の両方が含まれる場合があります。 (動的に読み込まれる) テストに基づいて練習リンクを選択する必要があります。

さらに情報が必要な場合はお知らせください

4

2 に答える 2

0

ここでの問題は、表示言語を英語から別の言語に変更すると、値「テストB」も変更されることだと思います。XPath識別子で//*[contains(text()、'Test B')]を指定して、 「テストB」を明示的に検索しています。言語が変更されると、Seleniumはこの値を見つけることができません。

HTMLコードを見ると、すべてのタグに一意のID属性があると感じました。これは、言語を変更しても変わらないと思います。

たとえば、テキストの代わりにXPathで「Id」属性を使用してみてください。

XPath( "// td [@ id ='ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl04_lblCandidateFriendlyName']")

</td><td class="gridcol" rowspan="2">
    <span id="ctl00_ErrorMessageContentPlaceHolder_gdvAssessmentHome_ctl04_lblCandidateFriendlyName">Test B</span>
</td><td class="gridcol">

さまざまな言語オプションに対してテストを実行する必要があるため、Webオブジェクトの識別にある程度の一意性が必要です。Idを使用すると、少なくともすべての言語オプションについて、テストケースごとにオブジェクト識別の一意性が保証されると思います。

選択した言語に基づいて、「テストB」の値を同じ言語に変換し、XPath文字列の変数値として使用するため、従うことができる別のアプローチは少し複雑です。

手順は次のようになります。1。一意のID「テストB」をUnicodeに変換します。2.Unicode値を選択したブラウザ言語に変換します。3. XPathで上記の値を変数文字列として使用し、プログラムで変更します。

最後のアプローチは、Web要素のテーブル値をIListに格納し、オブジェクト参照用にIListのインデックス値を使用してテストスクリプトを作成することです。ここでも、動的オブジェクトの作成を考慮して、テストケースごとに異なるスクリプトを作成する必要があります。ブラウザの言語を変更しても、スクリプトにIListのインデックス値を使用している場合は、それが標準になります。

于 2013-03-21T15:40:52.540 に答える
0

当たり前じゃないですか?要素を識別するためにテキストを使用しています。言語が変更された場合は機能しません。テキストは言語によって異なります。

このようなことをしてみませんか?

If testing in English String text = "Test B"

Else if testing in Chinese String text = "测试B";

 xpath="//*[contains(text(), "+text+" )]/../../td[3]/input"

このアプローチの代わりに、言語を変更するたびに渡す必要があるテキストに依存しなくなるように、テキストを使用して要素を識別することを避けませんか。または、この動的コンテンツを処理するロジックを考え出すには、このテスト ケースを手動でテストするときと同じ手順に従う必要があります。

于 2013-03-22T19:45:05.910 に答える