如何选择未附加到属性的文本的css元素?

时间:2012-10-18 17:37:15

标签: css-selectors selenium-webdriver

我目前正在使用Java绑定工作Eclipse,而且我正在自动化电子商务网站。我正在使用Selenium 2(Webdriver)来编写我的自动化脚本,并且我在尝试通过css获取特定元素时遇到问题。我的偏好是css,因为xpath的性质不稳定(特别是每周在我们网站上实现的更改)。有人可以帮助我吗?提前致谢。我需要点击两个按钮,它们都很相似。第一个是继续按钮:

<td class="content" style="vertical-align: bottom; ; background: url(http://g-ecx.images-amazon.com/images/G/01/digital/video/avod-1-5/dp-sprite-total._V156422041_.png) no-repeat -3px -153px; padding: 0px 4px 0px 11px;">       Yes, continue with my purchase     </td>

第二个是取消按钮:

<td class="content" style="vertical-align: bottom; ; background: url(http://g-ecx.images-amazon.com/images/G/01/digital/video/avod-1-5/dp-sprite-total._V156422041_.png) no-repeat -3px -181px; padding: 0px 4px 0px 11px;"> Cancel </td>

正如您所看到的,它们都具有相似的结构,但只是在文本上有所不同。现在我可以使用这个 - css=td.content

但这会使两个元素都启动并且脚本失败。我需要做的是输入一些可以使用文本的内容。提前感谢您的帮助

1 个答案:

答案 0 :(得分:0)

CSS选择器不能以这种方式工作。有一种叫做contains()的东西,但它被删除了。您可以为每个td元素添加第二个类,如下所示:

<td class="content action_yes"...>
<td class="content action_no"...>

然后你的CSS选择器看起来像这样(在jQuery中只是因为它很干净,这种方法是标准的CSS)

$('.action_yes')
$('.action_no')