CSSセレクター(IDにはテキストの一部が含まれています)


92

質問があります。私はこのような要素を持っています:

<a> id = someGenerated Some:Same:0:nameの要素

<a> id = someGenerated Some:Same:0:surnameの要素

<a> id = someGenerated Some:Same:1:nameの要素

<a> id = someGenerated Some:Same:1:surnameの要素

名前を取得するにはCSSセレクターが必要です。問題は、どうやって入手したらいいのかわからないことです。私は試しましたa[id*='Some:Same']-それはすべての<a>要素を返しました。idがnameで終わる要素を取得した後。しかし、私はこの考えが好きではありません。他のセレクターでもできると思います。


<a>選択したいタグと不要なタグの実際の例をいくつか追加してください。実際のコードを確認するのが簡単になります。
andyb 2012

機密ポリシーのため、実際の例を追加することはできません:(
TarasLviv 2012

しかし、私はそれを他の方法で説明することができます。Id属性には次のものが含まれます:いくつかの生成された文字+いくつかの静的文字+:elementIndexInTable:+テーブルの列名
TarasLviv 2012

そして、あなたが望むもののための基準は何ですか?
ターケン2012

回答:


144

これを試して:

a[id*='Some:Same'][id$='name']

これによりa、IDを含むすべての要素が取得されます

一部:同じ

IDの末尾が

名前


ええと、id *は私には機能せず、Web要素に対して評価できないと言われました。<constant><variable><constant>名前のようなIDを持つiframeを見つけるために使用しました。//driver.findElements(By.xpath("//iframe[contains(@id*,'FrameID')]")).size();ここで、FrameIDは最初の部分です。とにかく、//a[contains(@id,'Some:Same') and contains(@id,'name')]私のためにトリックをしました。だからあなたの仲間に+1。
anujin 2013年

2
この回答からXPathセレクターを削除する必要があります。これは何も追加せず、水を濁しているだけです
Liam

1
@CosminOの*隣が必要idですか?
cokedude 2018

@cokedude * =演算子は、少なくとも演算子の後の値が含まれている必要があることを意味します。これは、演算子$ =を使用して、他の何かで終了する必要があるという2番目の条件と連動して機能し ます。詳細な説明についてはこれを参照してくださいw3schools.com/css/css_attribute_selectors.asp短い答え。*はidの隣ではなく、=の隣にあり、特別な意味を持つ演算子を形成します
CosminO 2018年

21
<div id='element_123_wrapper_text'>My sample DIV</div>

演算子^ -指定された値で始まる要素に一致します

div[id^="element_123"] {

}

演算子$-指定された値で終わる要素に一致します

div[id$="wrapper_text"] {

}

演算子*-指定された値を含む属性を持つ要素に一致します

div[id*="wrapper_text"] {

}

8

私が見る唯一のセレクターはa[id$="name"](「名前」で終わるIDを持つすべてのリンク)ですが、それは必要なほど制限的ではありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.