Python 具有相邻同级组合器的Selenium RC css选择器选择了错误的表行

Python 具有相邻同级组合器的Selenium RC css选择器选择了错误的表行,python,selenium,css-selectors,Python,Selenium,Css Selectors,编辑:我在最初发布的表数据中犯了一个错误。更正以粗体显示 我正在为Selenium RC编写Python。在下面的文档中,我试图选择包含“美国”和“1”的表行,但选择器总是选择包含“美国”和“214”的行。我想我知道为什么。看起来:contains()与214中的“1”匹配,并且该行被选中 这是我的选择器语法: self.selenium.click("css=table#filltbl tr td:contains(%s) + td:contains(%s)"%(country, area_c

编辑:我在最初发布的表数据中犯了一个错误。更正以粗体显示

我正在为Selenium RC编写Python。在下面的文档中,我试图选择包含“美国”和“1”的表行,但选择器总是选择包含“美国”和“214”的行。我想我知道为什么。看起来:contains()与214中的“1”匹配,并且该行被选中

这是我的选择器语法:

self.selenium.click("css=table#filltbl tr td:contains(%s) + td:contains(%s)"%(country, area_code))
其中国家==“美国”和地区代码==“1”。似乎忽略了相邻的兄弟组合符

如何使:contains()完全匹配“1”

谢谢,很抱歉给你带来了困惑

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
. . .
<table class="wrapper" cellspacing="0" cellpadding="0">
 <tbody>
  <tr>
   <td>
    <table id="filltbl" class="tfill" cellspacing="0" cellpadding="0">
      <tbody>
       <tr class="fill">
         <td>United States</td>
         <td>214</td>
         <td>&nbsp;</td>
       </tr>
       <tr class="fill">
         <td>United States</td>
         <td>1</td>
         <td>&nbsp;</td>
       </tr>
     </tbody>
    </table>
. . .

. . .
美国
214
美国
1.
. . .

检查是否有助于创建复杂的css3定位器

似乎不是被忽略的兄弟组合符。。。无论如何,你能试试XPath定位器吗?谢谢你的回复。你说得对。兄弟组合器不会被忽略。我在发布的数据中犯了一个错误,我已经纠正了这个问题。我不想使用XPath,因为它太慢了。我认为您无法与CSS选择器进行精确匹配,只能使用XPath。再次感谢您的回复。在本例中,我放弃了使用:contains()。由于IE的XPath速度太慢,我最终在表上迭代,直到找到匹配的行,然后在选择器中使用索引,如下所示:
self.selenium.click(“css=table#filltbl tr:nth(%d)”%rowNumber)
感谢链接。这是一个很好的参考。我已经解决了上面提到的问题。虽然这可以从理论上回答这个问题,但这里要包括答案的基本部分,并提供链接供参考。