如何在Selenium RC中通过xpath访问非第一个匹配项?
我页面上有20个标签:
In [85]: sel.get_xpath_count("//label")
Out[85]: u'20'
默认情况下,我可以获取第一个标签:
In [86]: sel.get_text("xpath=//label")
Out[86]: u'First label:'
但是,与我找到的xpath文档不同,我在尝试使用xpath获取第二个标签的文本时遇到了错误:
In [87]: sel.get_text("xpath=//label[2]")
ERROR: An unexpected error occurred while tokenizing input
The following traceback may be corrupted or invalid
The error message is: ('EOF in multi-line statement', (216, 0))
ERROR: An unexpected error occurred while tokenizing input
The following traceback may be corrupted or invalid
The error message is: ('EOF in multi-line statement', (1186, 0))
---------------------------------------------------------------------------
Exception Traceback (most recent call last)
/Users/me/<ipython console> in <module>()
/Users/me/selenium.pyc in get_text(self, locator)
1187 'locator' is an element locator
1188 """
-> 1189 return self.get_string("getText", [locator,])
1190
1191
/Users/me/selenium.pyc in get_string(self, verb, args)
217
218 def get_string(self, verb, args):
--> 219 result = self.do_command(verb, args)
220 return result[3:]
221
/Users/me/selenium.pyc in do_command(self, verb, args)
213 #print "Selenium Result: " + repr(data) + "\n\n"
214 if (not data.startswith('OK')):
--> 215 raise Exception, data
216 return data
217
Exception: ERROR: Element xpath=//label[2] not found
这是怎么回事呢?
1 个回答
2
使用:
(//label)[2]
你现在使用的XPath表达式是:
//label[2]
这意味着:
选择文档中每个label
元素,这些label
是它们父元素的第二个label
子元素。很可能文档中的每个label
都是它们父元素的第一个也是唯一的label
子元素。在这种情况下,上面的表达式将不会选择任何东西。