Не корректно работает Xpath в функции get_all_by_xpath

Если вы обнаружили какие либо ошибки, недочеты и неудобства или другие незачеты в программе напишите нам об этом на этом форуме - мы бум исправлять
Ответить
AnToxa
Сообщения: 10
Зарегистрирован: 15 апр 2020, 16:51

Не корректно работает Xpath в функции get_all_by_xpath

Сообщение AnToxa » 15 апр 2020, 17:10

Рассмотрим два варианта кода:
Вариант1:
<?php
$xhe_host = "127.0.0.1:7010";
require("../Templates/xweb_human_emulator.php");
$browser->navigate("https"."://"."r"."ia.ru"."/world/"); 
$xPath = "//div[@class='list-item__content']"; 
$listElements = $element->get_all_by_xpath($xPath); 
foreach($listElements as $elementList){ 
  var_dump($elementList); 
  echo "element: ".$elementList->get_number()."\n"; 
  echo "xpath: ".$elementList->get_xpath()."\n"; 
  echo "tag: ".$elementList->get_tag()."\n"; 
} 
$app->quit(); ?> 
Вариант 2:
<?php
$xhe_host = "127.0.0.1:7010";
require("../Templates/xweb_human_emulator.php");
$browser->navigate("https"."://"."r"."ia.ru"."/world/"); 
$listElements = $element->get_all_by_attribute('class',"list-item__content",true); 
echo "get elements\n"; 
foreach($listElements as $elementList){ 
  var_dump($elementList); 
  echo "element: ".$elementList->get_number()."\n"; 
  echo "xpath: ".$elementList->get_xpath()."\n"; 
  echo "tag: ".$elementList->get_tag()."\n"; 
} 
$app->quit(); ?>


"//div[@class='list-item__content']" и "div.list-item__content" - проверял в браузере Human Emulation Studio в панели разработчика находят одинаковые узлы Dom.
Вопросы:
1) Почему количество object(XHEInterface) одинаковое, и object(XHEInterface)#91 - номер объекта #91 у обоих вариантов совпадает, а другие свойства у возвращаемых объектов отличаются(точнее вариант с Xpath возвращает не то что надо)?
2) Почему вот такая "громоздкая" запись xpath "'/html/body/div[10]/div[3]/div/div[4]/div[2]/div[1]/div/div[2]/div[10]/div'" работает, а компактная "//div[@class='list-item__content']" не работает?

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3047
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: Не корректно работает Xpath в функции get_all_by_xpath

Сообщение bigfozzy » 15 апр 2020, 17:46

Спасибо, тут баг был в функции get_all_by_xpath.
Исправили. Минут через 30 обновим версию.

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3047
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: Не корректно работает Xpath в функции get_all_by_xpath

Сообщение bigfozzy » 15 апр 2020, 19:10

Обновили. Все теперь должно работать.

AnToxa
Сообщения: 10
Зарегистрирован: 15 апр 2020, 16:51

Re: Не корректно работает Xpath в функции get_all_by_xpath

Сообщение AnToxa » 15 апр 2020, 19:46

У меня что-то ничего не изменилось. Моя версия программы сама обновится или мне что-то надо сделать еще?

AnToxa
Сообщения: 10
Зарегистрирован: 15 апр 2020, 16:51

Re: Не корректно работает Xpath в функции get_all_by_xpath

Сообщение AnToxa » 15 апр 2020, 19:48

Нажал проверить обновления, пишет No available updates

AnToxa
Сообщения: 10
Зарегистрирован: 15 апр 2020, 16:51

Re: Не корректно работает Xpath в функции get_all_by_xpath

Сообщение AnToxa » 15 апр 2020, 19:51

Моя версия программы
XWeb Human Emulator Studio
Version 7.0.46
@2007-2018 humanemulator.info

Built on Chromium Embedded Framework
- r79.1.36+g90301bd+chromium-79.0.3945.130
Built on Chromium
- 79.0.3945.130
Built on CefSharp

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3047
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: Не корректно работает Xpath в функции get_all_by_xpath

Сообщение bigfozzy » 15 апр 2020, 21:18

Перезакачайте еще раз с сайта 46 версию, обновляли без изменения номера.

AnToxa
Сообщения: 10
Зарегистрирован: 15 апр 2020, 16:51

Re: Не корректно работает Xpath в функции get_all_by_xpath

Сообщение AnToxa » 16 апр 2020, 03:12

Спасибо теперь работает. Нашел еще один "не критичный" баг: если в выражении xpath использовать двойные кавычки " вместо ' то функция get_all_by_xpath перестает работать. Например:
$xPath = '//div[@class="list-item__content"]';

AnToxa
Сообщения: 10
Зарегистрирован: 15 апр 2020, 16:51

Re: Не корректно работает Xpath в функции get_all_by_xpath

Сообщение AnToxa » 16 апр 2020, 13:06

А можно добавить функции get_child_by_xpath и get_all_child_by_xpath ? Было бы удобнее работать с dom.

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3047
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: Не корректно работает Xpath в функции get_all_by_xpath

Сообщение bigfozzy » 16 апр 2020, 22:07

Спасибо, принято. Сделаем.

Ответить