【问题标题】:Selenium CSS Locator special character @Selenium CSS 定位器特殊字符@
【发布时间】:2011-12-09 05:12:31
【问题描述】:

我只是想知道特殊字符 @ 在 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
>>> 

有什么帮助吗?

【问题讨论】:

    标签: selenium css-selectors


    【解决方案1】:

    @ 字符在 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')
    

    【讨论】:

    • 这是一个很好的答案....我发现@没有意义!如果您为@ 提供定位器类型,则其他工作会接管并且可以正常工作!如果两种定位器类型都带有@,则搜索失败!!谢谢
    • 也用于响应式布局的媒体查询。 @媒体
    猜你喜欢
    • 1970-01-01
    • 2014-11-03
    • 2013-05-11
    • 2020-10-17
    • 2015-11-23
    • 1970-01-01
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多