Поиск объектов на web-странице с помощью XPath
#1
Отправлено 20 марта 2013 - 12:10
Пытаюсь использовать xpath для поиска объектов на web-странице: найти какую-либо ссылку и по ней кликнуть.
Однако столкнулась с ошибкой "EvaluateXPath(...) - есть null или не является объектом".
Эта ошибка возникает в конструкции
var path = '//div[@class="pole fix"]//li/a[text() = "1"]'
Page.EvaluateXPath(path)[0].Click();// Page - любая станица, открытая в explorer'e
даже если в переменную path задать полный путь, который выдает FirePath: "html/body/article/div/div/div[3]/div/div/nav/ul/li[1]/a"
В чем может быть проблема, есть идеи?
#2
Отправлено 20 марта 2013 - 12:31
Попробуйте наоборот, содержимое переменной обрамлять в " ", а внутри - ' '
Попробуйте убрать //li/a[text() = "1" , сначала просто найдите класс pole fix, затем прибавляйте к своей конструкции выражения далее, возможно где-то выражение неверно записано и неверно парсится.
#3
Отправлено 20 марта 2013 - 12:47
var tmp = Page.EvaluateXPath(path); if (tmp != null) { var arr = (new VBArray(tmp).toArray()); // <--- конвертируем в JScript-массив arr[0].Click(); }
#4
Отправлено 20 марта 2013 - 17:11
В JScript результат функции EvaluateXPath нельзя использовать напрямую, его сначала надо сконвертировать в JScript-массив:
var tmp = Page.EvaluateXPath(path); if (tmp != null) { var arr = (new VBArray(tmp).toArray()); // <--- конвертируем в JScript-массив arr[0].Click(); }
Не помогло, объекты все равно не находятся, даже если указать полный путь к ним :(
#5
Отправлено 21 марта 2013 - 06:48
#6
Отправлено 21 марта 2013 - 06:50
#7
Отправлено 21 марта 2013 - 06:54
А в Firebug или Chrome Developer Tools ваш XPath работает? Т.е. если там в консоли ввести $x('//div[@class="pole fix"]//li/a[text() = "1"]'), то объект находится?
в FireBuge объект находит так: //div[@class="pole fix"]//li/a[text() = "1"]
#8
Отправлено 21 марта 2013 - 07:07
Смущает сообщение ошибке. Page точно существует? Поставьте breakpoint, посмотрите что там за объект, есть ли у него метод EvaluateXPath.
Получается что нет такого метода
#9
Отправлено 21 марта 2013 - 14:15
Смущает сообщение ошибке. Page точно существует? Поставьте breakpoint, посмотрите что там за объект, есть ли у него метод EvaluateXPath.
Получается что нет такого метода
Вот чесно скажу, не связываетесь вы с этим методом, в ТестКомплите и без того хватает средств для поиска объектов.
#10
Отправлено 29 марта 2013 - 06:52
может кто знает, как найти через xpath объект, у которого id формируется динамически при каждом переходе на страницу по шаблону : "sel<3-4 произвольных символа>_chzn". Можно ли использовать какой-либо символ (типа "*"), указывающий на произвольное количество символов в значении id ?
#11
Отправлено 01 апреля 2013 - 07:00
Попробуйте так:может кто знает, как найти через xpath объект, у которого id формируется динамически при каждом переходе на страницу по шаблону : "sel<3-4 произвольных символа>_chzn".
//*[starts-with(@id, 'sel') and substring(@id, string-length(@id)-4) = '_chzn']
#12
Отправлено 02 апреля 2013 - 04:44
Попробуйте так:может кто знает, как найти через xpath объект, у которого id формируется динамически при каждом переходе на страницу по шаблону : "sel<3-4 произвольных символа>_chzn".
//*[starts-with(@id, 'sel') and substring(@id, string-length(@id)-4) = '_chzn']
так тоже не получилось, null возвращается
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных