3

この CSS セレクターを Selenium webdriver で使用したい

#coordinatonTable .odd:not(:has(.dataTables_empty))

「無効または不正な文字列が指定されました」というエラーが表示されます。w3schools の jquery セレクター テストを試してみました。また、このサービスは「不正なセレクター」を表示します。セレクターを短くすると動作します

#short .odd:not(:has(.dataTables_empty))
#coordinatonTable .odd:not(:has(.short))
#short .odd:not(:has(.short))

セレクターが長すぎるようです。しかし、これは本当のことではありません。何か提案はありますか?

html 部分の構造は次のようになります。

id="coordinatonTable"
  class="odd"
    class="dataTables_empty"
  class="odd"
    class="something"
  class="odd"
    class="somethingelse"
  ...

空の子がない場合、すべての奇数要素を取得したい。

4

3 に答える 3

4

:hasは有効な CSS セレクターではありません。これは jQuery 拡張機能であり、どの CSS ファイルでも無効になります。

他の例でエラーが発生しなかった理由がわかりません。彼らは私のためにします。

于 2013-06-07T13:34:07.153 に答える
2

:hasは jQuery セレクターです。これは CSS3 仕様の一部ではありません。クラスが存在しないことを確認するだけの場合は、次のようにします。

#coordinatonTable .odd:not(.dataTables_empty)

于 2013-06-07T13:33:44.653 に答える
1

あなたが探しているのは、切望されている (しかし利用できない) 親セレクターです。他の人が述べたように、:hasjQuery のみであり、CSS によって拒否されます。現在、純粋な CSS を使用して、要素に含まれる子に基づいて要素のスタイルを変更する方法はありません。ループを実行して要素を作成しているバックエンドにアクセスできる場合は、最初に子があるかどうかを確認し、「奇数」クラスとともに「空」クラスを追加します。

例:

id="coordinatonTable"
    class="odd empty"
        class="dataTables_empty"
    class="odd"
        class="something"
    class="odd"
        class="somethingelse"
    ...

または、それが不可能な場合は、DOM のロード後に JavaScript を使用してループし、空のクラスを親要素に追加することができます。いずれにせよ、親要素でクラスを取得する必要があるため、次のことができます。

.odd.empty {
    /* Special CSS for empty cell */
}
于 2013-06-07T13:53:53.113 に答える