我只是想知道特殊字符@在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
>>>
请帮忙吗?
答案 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')