2016-07-28 13 views
2

受け取りテストの目的で、ページのdivにネストされたチェックボックスを選択しようとしています。ここで複数の属性を持つネストされた要素のCSSセレクタを作成する

は、私が見るかもしれないDOM構造の例です:

... 
<div class="section-1"> 
    ... 
    <input type="checkbox" name="type[12312][][]" value="1">Thing1</input> 
    <input type="checkbox" name="type[12312][][]" value="2">Thing2</input> 
    ... 
</div> 
... 

通常、私は特定のチェックボックスを選択するには、このような何かを行うことができます:

input[name*=type][value=1] 

しかし、私の場合は、私が必要特定のセクションのチェックボックス。ページの中には多くのものがあります。だから私は、次のように働くだろうと想定:

.section-1 input[name*=type][value=1] 

が、それはないを行います。

私の質問は以下のとおりです。

  1. なぜそれは動作しませんか?
  2. 入力を今すぐ選択するにはどうすればよいですか?

注:私は入力を取得するJSを使用することができますが、私は本当には、私は関数は要素の操作を処理するためのライブラリ(セレン)のを使用できるようにCSSセレクタを使用することを好むだろう。

+0

あなたのcssセレクタに '' 'がないことを除いて何か間違ったことはありません。これは私のためにこのように動作します。 '.section-1 input [name * = 'type'] [value = '1']' –

+0

これも機能します。 = '1'] ' –

+0

あなたの「要約」は実際には答えです。回答欄に移動してください。 – BoltClock

答えて

1

これは動作します:

.section-1 input[name^="type"][value="2"] { 
 
    display: block; 
 
    margin: 25px; 
 
}
<div class="section-1"> 
 
    <input type="checkbox" name="type[12312][][]" value="1"> 
 
    <input type="checkbox" name="type[12312][][]" value="2"> 
 
</div>

は、あなたの属性値に引用符を追加してみてください。

また、input要素はvoid elementです。終了タグはなく、コンテンツを受け入れません。

+1

あなたの答えは非常に徹底していますので、私はそれに投票します。属性値の周りに引用符を追加すると違いが生じたことに気付かず、引用符が問題になりました。結局のところ、最初の属性には違いはありませんでした。入力要素が無効であることを指摘してくれてありがとう、それは私の間違いです。私は間違ってそれをコピーしたと思う。 –

1

あなたが子供に行きたい場合は>を使用する必要があります。 はセレン要素ロケータのためcssSelector下記の使用:ウル名前がタイプで始まるよう

.section-1 > input[name^= 'type'][value= '1'] 

私は^を使用します。

希望これはあなたを助けます。

+0

>残念なことに>は直接の子供のためだけであり、これは直系の子供ではありません。私はあなたの提案を試みるでしょう –

+0

引用符が働いた!ワオ。私は属性の値の周りの引用符はオプションだと思ったが、明らかにそれは私の間違いだった。ありがとう! –

+0

yes>これは即座に実行されますが、すぐに選択される子を確認するための属性もあります。あなたは値= 1を使用するので、値が1の直接的な子供を選択します – noor

0

これが失敗する原因となった属性値の引用符がありませんでした。仕様によれば、属性値は識別子または文字列のいずれかです。識別子には文字と数字を含めることができますが、ではなく、で始まる数字で始まる必要があります。これが失敗した理由です。

関連する問題