Selenium CSS定位器特殊字符@

时间:2011-12-08 00:40:52

标签: selenium css-selectors

我只是想知道特殊字符@在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定位器获得以下元素存在结果 -

# 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
>>> 

请帮忙吗?

1 个答案:

答案 0 :(得分: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')