Я пытаюсь проиндексировать результаты, возвращаемые xpath. Например:Индексирование результатов, возвращаемых selenium
xpath = '//a[@id="someID"]'
может возвратить несколько результатов. Я хочу получить их список. Я думал, что делать:
numOfResults = sel.get_xpath_count(xpath)
l = []
for i in range(1,numOfResults+1):
l.append(sel.get_text('(%s)[%d]'%(xpath, i)))
будет работать, потому что делать что-то подобное с Xpath проверки Firefox работает:
(//a[@id='someID'])[2]
возвращает 2-й результат.
Идеи почему поведение будет отличаться и как сделать такую вещь с селеном Благодаря
Это не работает - потому что он перебирает на ребенка а-с. Это означает, что если у вас есть два a-s, соответствующие этому xpath, и оба имеют родительский div. И оба являются первым потомком этого div, тогда 'xpath [1]' вернет обе ссылки, а 'xpath [2]' не вернет ни одного. – Guy
'// a [@ id = 'someID'] [1]' должен возвращать первый элемент на странице, являющийся ссылкой с идентификатором = someID, а затем '// a [@ id = 'someID] [2] ] 'вернет 2-й элемент. С помощью этого xpath вы используете его, не заботятся о том, что такое родитель. 'xpath [1]' не будет возвращать массив, потому что он ищет первый элемент в массиве – AutomatedTester
попробуйте это: goto http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns = 1 & q = google (или выполните поиск google в google) и найдите xpath '// li // a [1]'. Я получаю все ссылки, а не только первый. – Guy