2011-12-08 8 views
2

セレンのCSSロケータで特殊文字@の意味を知りたかっただけです。例えばSelenium CSS Locatorの特殊文字@

、HTML

<select id="ms1" multiple="multiple"> 
    <option id="oa"> 
    OptionA 
    </option> 
    <option id="ob" selected="selected"> 
    OptionB 
    </option> 
    <option id="oc"> 
    OptionD 
    </option> 
</select> 

のために私は別のCSS locators-

# s1 is selenium object 
>>> s1.is_element_present('css=select[multiple="multiple"][id="ms1"]') 
False 
>>> s1.is_element_present('css=select[@multiple="multiple"][id="ms1"]') 
True 
>>> s1.is_element_present('css=select[@multiple="multiple"][@id="ms1"]') 
False 
>>> s1.is_element_present('css=select[multiple="multiple"][@id="ms1"]') 
False 
>>> 

と、次の要素の存在の結果にすべてのヘルプをしてくださいもらいますか?

答えて

0

@文字はSelenium CSSセレクタで特別な目的はありません。 Selenium getAttributeコマンドでは特別な意味がありますが、ここで使用しているのとは異なります。

ごさがすを書くための正しい方法は次のとおりです。

s1.is_element_present('css=select#ms1[multiple="multiple"]') 

id属性がユニークなことになっているので、次は、同じようにうまく動作するはず、とおそらく速く:

s1.is_element_present('css=#ms1') 

CSS分析が不要なため、さらに高速になります。

s1.is_element_present('id=ms1') 
+0

これは素晴らしいansですwer ....私が見つけたものは、意味がありません! @にロケータタイプを指定すると、他の作業が引き継ぎ、動作します!両方のロケータタイプに@が付いていると、検索に失敗します!!おかげで – abarik

+0

また、反応的なレイアウトのメディアクエリに使用されます。 @メディア – Karthik