我有以下内容
<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结构发生变化,我真的不必担心修改定位器。
答案 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>
在您的示例中,该按钮不是真实类
的直接子项