2011-12-08 46 views
2

我只是想知道selenium CSS定位器中特殊字符@的含義。Selenium CSS定位器特殊字符@

例如,對於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命令中有特殊含義,但這不是你在這裏使用的。

寫你SEACH正確的方法是:

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

然而,由於id屬性都應該是獨一無二的,下面應該工作一樣好,而且可能會比較快:

s1.is_element_present('css=#ms1') 

甚至更​​快,因爲沒有CSS分析是必要的:

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

這是一個偉大的答案更....我發現的是@沒有意義!如果你提供了一個定位器類型@,其他工作接管,它的工作!如果兩個定位符類型都帶有@,則搜索失敗!謝謝 – abarik

+0

也用於響應式佈局的媒體查詢。 @媒體 – Karthik