2011-12-08 37 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