0

次のような html 構造があるとします。

<html><head></head>
    <body>
            <table>
                    <tr>
                            <td>
                                    <table>
                                            <tr>
                                                    <td>Left</td>
                                            </tr>
                                    </table>
                            </td>
                            <td>
                                    <table>
                                            <tr>
                                                    <td>Center</td>
                                            </tr>
                                    </table>
                            </td>
                            <td>
                                    <table>
                                            <tr>
                                                    <td>Right</td>
                                            </tr>
                                    </table>
                            </td>
                    </tr>
            </table>
    </body>
</html>

最初の行のテーブル データ項目の内容によってのみ区別される 3 つのサブ テーブルにアクセスする CSS セレクターを構築したいと考えています。

これどうやってするの?

4

2 に答える 2

1

内部テキストを検証するためにcssセレクターで利用できるそのような方法はないと思います。

これは、xpath または jQuery パスを使用して実現できます。

xpath :

   "//td[contains(text(),'Left')]"

               or

     "//td[text()='Right']"

jQuery パス

    jQuery("td:contains('Centre')")

以下のロジックを使用して、WebDriver オートメーションで jQuery パスを実行できます。

JavascriptExecutor js = (JavascriptExecutor) driver;
WebElement element=(WebElement)js.executeScript(locator);
于 2012-10-04T15:56:06.747 に答える
1

要素の .text メソッドは、要素のテキストを返します。

tables = page.find_elements_by_xpath('.//table')
contents = "Left Center Right".split()
results = []
for table in tables: 
    if table.find_element_by_xpath('.//td').text in contents: # returns only the first element
         results.append(table)

「ページ」を最初の「テーブル」要素に設定し、それに対して検索を実行することで、検索フィールドを絞り込むことができます。このように、パフォーマンスを向上させる方法はありとあらゆる方法があります。無関係なテーブルが多数存在する場合、このメソッドはかなり遅くなることに注意してください。各 Web ページには、情報をどのように表現するかについての癖があります。効率を上げるために、それらを回避するようにしてください。

リスト内包表記を使用して結果を返すこともできます。

results = [t for t in tables if t.find_element_by_xpath('.//td').text in contents]
于 2012-10-04T17:25:08.323 に答える