我有以下内容
<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 结构在未来发生变化,我真的不必担心修改定位器。
最佳答案
你已经在 real-class 上使用了 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>
在您的示例中,按钮不是真实类 的直接子级
关于selenium 页面的 Css 选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25062702/