硒页面的Css选择器

时间:2014-07-31 15:15:36

标签: css selenium-webdriver css-selectors

我有以下内容

<div class="startpack">
<div class="test-class">
    <div id="login">
        <div id="frag">
            <h3>blah blah blah</h3>
        </div>
        <div id="testfrag">
            <form class="loginform">
                <input class="button" type="submit" value="log in" />
            </form>
        </div>
    </div>
</div>  

<div class="real-class">
    <div id="login">
        <div id="frag">
            <h3>blah blah blah</h3>
        </div>
        <div id="testfrag">
            <form class="loginform">
                <input class="button" type="submit" value="log in" />
            </form>
        </div>
    </div>
</div>  

<div class="noshow-class">
    <div id="login">
        <div id="frag">
            <h3>blah blah blah</h3>
        </div>
        <div id="testfrag">
            <form class="loginform">
                <input class="button" type="submit" value="log in" />
            </form>
        </div>
    </div>
</div>  
</div>

现在,如果我希望我的selenium代码点击<div class="real-class">里面的提交按钮,我将用于cssSelector?

我试过

driver.findElementBycssSelector(".startpack>#real-class>input[class=\"button\"]").click()

但那没用。我想尽可能地使它尽可能不进行div [0]或div [1]等。所以如果将来我的DOM结构发生变化,我真的不必担心修改定位器。

1 个答案:

答案 0 :(得分:1)

您已在真实类上使用了ID选择器#,但实际上您只有一个类名为.real-class的元素。

您可以更改HTML以匹配此选择器,或者只使用类选择器.startpack>.real-class input[class="button"]

您也使用了直接子组合>。 (http://www.w3.org/TR/css3-selectors/#child-combinators

#real-class>input.button只有在您的HTML看起来像这样时才会成立:

<div id="real-class">
  <input class="button" value="test" type="submit" />
</div>

在您的示例中,该按钮不是真实类

的直接子项