1

私の目標は、ページ上のすべてのリンクの数を取得し、その数をループして、特定のページのすべてのリンクのテキストを取得することです。私はC#も使用しています(Visual Studio Expressで)。

ページに表示されているリンクのテキストを取得するための xpath は何ですか? 私はxpathにかなり慣れていて、何が欠けているのかわかりません。

カウント変数は次のとおりです。

decimal count = selenium.GetXpathCount("//a[@href]");

そのため、ページ上の @href 属性を持つリンクの数が返されます。ここまでは順調ですね。しかし、ループすると、ページに隠されているリンクのテキストが返されます。

for (int i = 1; i <= count; i++)
{
    linkTxt = selenium.GetText("xpath=(//a[@href][" + i + "])/text()");
    if (selenium.IsPresent("xpath=(//a[@href])[" + i + "]") && selenium.IsVisible("xpath=(//a[@href])[" + i + "]"))
    {
        MessageBox.Show(linkTxt, "Link Text", MessageBoxButton.OK);
    }
}

それはうまくいくはずですが、問題の一部は、 //a リンクの親である //div の一部が非表示ではなく、 // テーブルの一部が非表示になっているためだと思います。

html の例:

<table border="0" cellpadding="0" cellspacing="0" id="tableIDTwo" class="navigation-inside product-rightonly" aria-hidden="false" style="">
<colgroup>
    <col>
    <col>
    <col>        
</colgroup>
<tbody>
    <tr>
        <td>
            <div class="background-orange" id="someID" aria-hidden="false" style="white-space: nowrap;">1</div>
        </td>
        <td align="left" class="header-link" aria-hidden="false" style="vertical-align: middle; white-space: nowrap;">
            <div class="gwt-HTML" id="VisibleLink" aria-hidden="false" style="white-space: nowrap;">
                <a href="javascript:;">Visible Link Text</a>
                <a></a>
            </div>
        </td>
    </tr>    
</tbody>    
</table>
<div>
    <table>
        <tbody>
            <tr>
                <td>
                    <table>
                        <tbody>
                            <tr>
                                <td>
                                    <div>
                                        <div>
                                            <table border="0" cellpadding="0" cellspacing="0" id="tableIDone" class="grid-sf-table-inside" aria-hidden="true" style="display: none;">
                                                <colgroup>
                                                    <col>
                                                    <col>
                                                </colgroup>
                                                <tbody>
                                                    <tr aria-hidden="false" style="">
                                                        <td>
                                                            <div class="gwt-HTML" id="link1(1,0)" aria-hidden="false" style="white-space: normal;">
                                                                <a href="javascript:;">Hidden Link Text</a>
                                                            </div>
                                                        </td>
                                                        <td>             
                                                </tbody>        
                                            </table>
                                        </div>
                                    </div>
                                </td>
                            </tr>
                        </body>
                    </table>
                </td>
            </tr>
        </tbody>
    </table>
</div>
4

0 に答える 0