FindElemetsByXPath выдает ошибку

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
400
Баллы
63
Добра всем!
Поможите люди добрые разобраться:

Есть незамысловатая страница https://mail.ru
Есть на ней табы — Новости, Спорт итп.
Пытаюсь через Xpath получить коллекцию ссылок на эти табы, и в хроме мой Xpath прекрасно работает.
А в ProjectMaker я раз за разом получаю ошибку сбора коллекции, т.е -1 (см. код). Если убираю heCol.ErrorDetected, т.е. остается только heCol.IsVoid — возвращает 0, т.е. пустую коллекцию
Код (и собсно сам Xpath):
C#:
Tab tab = instance.MainTab;
    if ((tab.IsVoid) || (tab.IsNull)) return -1;
    if (tab.IsBusy) tab.WaitDownloading();
    tab.Navigate("https://mail.ru");
    if (tab.IsBusy) tab.WaitDownloading();
    
    
   HtmlElementCollection heCol = instance.ActiveTab.GetDocumentByAddress("0").FindElementsByXPath(@"//div[@class='tabs']/a");
    
    if ((heCol.IsVoid) || (heCol.ErrorDetected)) return -1; //Все время ловлю -1
    return heCol.Count; // Если вместо ((heCol.IsVoid) || (heCol.ErrorDetected)) оставить просто (heCol.IsVoid), то возвращает количество 0
Совсем уже потерял веру — на 20 раз пересмотрел документацию, и вроде все правильно делаю, но результата нет. Задача учебная, но мозг загадила так, что совсем покой потерял... Откройте глаза плз — это я туплю, или майлру меня на понты скрипты берет?
 

ial1408

Client
Регистрация
26.07.2016
Сообщения
191
Благодарностей
18
Баллы
18
Добра всем!
Поможите люди добрые разобраться:

Есть незамысловатая страница https://mail.ru
Есть на ней табы — Новости, Спорт итп.
Пытаюсь через Xpath получить коллекцию ссылок на эти табы, и в хроме мой Xpath прекрасно работает.
А в ProjectMaker я раз за разом получаю ошибку сбора коллекции, т.е -1 (см. код). Если убираю heCol.ErrorDetected, т.е. остается только heCol.IsVoid — возвращает 0, т.е. пустую коллекцию
Код (и собсно сам Xpath):
C#:
Tab tab = instance.MainTab;
    if ((tab.IsVoid) || (tab.IsNull)) return -1;
    if (tab.IsBusy) tab.WaitDownloading();
    tab.Navigate("https://mail.ru");
    if (tab.IsBusy) tab.WaitDownloading();
  
  
   HtmlElementCollection heCol = instance.ActiveTab.GetDocumentByAddress("0").FindElementsByXPath(@"//div[@class='tabs']/a");
  
    if ((heCol.IsVoid) || (heCol.ErrorDetected)) return -1; //Все время ловлю -1
    return heCol.Count; // Если вместо ((heCol.IsVoid) || (heCol.ErrorDetected)) оставить просто (heCol.IsVoid), то возвращает количество 0
Совсем уже потерял веру — на 20 раз пересмотрел документацию, и вроде все правильно делаю, но результата нет. Задача учебная, но мозг загадила так, что совсем покой потерял... Откройте глаза плз — это я туплю, или майлру меня на понты скрипты берет?
Думал сейчас создать тему по поводу FindElementsByXPath. У меня в проекте этот метод тоже не ищет элементы сейчас.
 

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
400
Баллы
63
А вот на тестовой площадке https://lessons.zennolab.com/ru/index все пучком, коллекцию собирает... Тем же кодом и без ошибок:

C#:
Tab tab = instance.MainTab;
    if ((tab.IsVoid) || (tab.IsNull)) return -1;
    if (tab.IsBusy) tab.WaitDownloading();
    tab.Navigate("https://lessons.zennolab.com/ru/index");
    if (tab.IsBusy) tab.WaitDownloading();
    
    
   HtmlElementCollection heCol = instance.ActiveTab.GetDocumentByAddress("0").FindElementsByXPath(@"//input[@class='inputs']");
    
    // if collection is invalid
    if ((tab.IsVoid) || (tab.IsNull)) return -1;
    return heCol.Count; //Возвращает честные 7 элементов коллекции
 

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
400
Баллы
63
И у Яши на маркете тоже все работает:
C#:
Tab tab = instance.MainTab;
    if ((tab.IsVoid) || (tab.IsNull)) return -1;
    if (tab.IsBusy) tab.WaitDownloading();
    tab.Navigate("https://market.yandex.ru/catalog--protsessory-cpu/55330/list?hid=91019&onstock=1&local-offers-first=0");
    if (tab.IsBusy) tab.WaitDownloading();
   
   
   HtmlElementCollection heCol = instance.ActiveTab.GetDocumentByAddress("0").FindElementsByXPath(@"//div[contains(@class,'n-snippet-card2')]");
   
    // if collection is invalid
    if ((tab.IsVoid) || (tab.IsNull)) return -1;
    return heCol.Count; //Возвращает 922 — считать не стал, но это явно не -1 и не 0!
 

TwistDanceR

Активный пользователь
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
И у Яши на маркете тоже все работает:
C#:
Tab tab = instance.MainTab;
    if ((tab.IsVoid) || (tab.IsNull)) return -1;
    if (tab.IsBusy) tab.WaitDownloading();
    tab.Navigate("https://market.yandex.ru/catalog--protsessory-cpu/55330/list?hid=91019&onstock=1&local-offers-first=0");
    if (tab.IsBusy) tab.WaitDownloading();


   HtmlElementCollection heCol = instance.ActiveTab.GetDocumentByAddress("0").FindElementsByXPath(@"//div[contains(@class,'n-snippet-card2')]");

    // if collection is invalid
    if ((tab.IsVoid) || (tab.IsNull)) return -1;
    return heCol.Count; //Возвращает 922 — считать не стал, но это явно не -1 и не 0!
Хм. А попробуй такой Xpath -
C#:
//div[contains(@class, 'tabs')]/a
У тебя немного не так было. И в коллекции там не 7 элементов, а 12 получается. Твой путь выдавал 7.
 

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
400
Баллы
63
Хм. А попробуй такой Xpath -
C#:
//div[contains(@class, 'tabs')]/a
У тебя немного не так было. И в коллекции там не 7 элементов, а 12 получается. Твой путь выдавал 7.
Ты цитируешь мой код от Яндекс Маркета, но не суть...
У меня было так:
C#:
@"div[@class='tabs']/a"
И именно в том и была задумка - получить в коллекцию только прямых потомков div-а с классом "tabs" которых реально 7. Вот этот кусок html:
HTML:
<div class="tabs">
    <a class="tabs__item js-click is-active" href="//news.mail.ru/" data-type="main" name="clb644113" data-d="660506" tabindex="30">Новости</a>
    <a class="tabs__item js-click" href="http://news.mail.ru/inregions/siberian/54/" data-type="regional" name="clb23640812" data-d="660371" tabindex="31">Новосибирск</a>
    <a class="tabs__item js-click" href="//sportmail.ru" data-type="sport" name="clb644062" data-d="660372" tabindex="32">Спорт</a>
    <a class="tabs__item js-click" href="//lady.mail.ru/" data-type="lady" name="clb644064" data-d="660379" tabindex="33">Леди</a>
    <a class="tabs__item js-click" href="//auto.mail.ru/" data-type="auto" name="clb644114" data-d="660373" tabindex="34">Авто</a>
    <a class="tabs__item js-click" href="//kino.mail.ru/" data-type="cinema" name="clb644116" data-d="660375" tabindex="35">Кино</a>
    <a class="tabs__item js-click" href="//hi-tech.mail.ru/" data-type="hitech" name="clb644118" data-d="660380" tabindex="36">Hi-Tech</a>
    <div id="tabs:dropdown-container" class="o-dropdown__container tabs__item tabs__item_more">
        <span class="tabs__dropdown-button o-dropdown__button js-click" data-type="more" name="clb818633"><svg width="16" height="4" viewBox="0 0 16 4" xmlns="http://www.w3.org/2000/svg"><path d="M2 4a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm6 0a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm6 0a2 2 0 1 0 0-4 2 2 0 0 0 0 4z" fill-rule="evenodd"></path></svg>
        </span>
        <div id="tabs:dropdown" class="o-dropdown tabs__dropdown i-hide">
            <span class="tabs__dropdown-nose"></span>
            <a class="tabs__dropdown-item i-color-black i-link-no-deco js-click" href="//games.mail.ru/pc/" data-type="games" name="clb683645" data-d="683644">Игры</a>
            <a class="tabs__dropdown-item i-color-black i-link-no-deco js-click" href="//deti.mail.ru/" data-type="deti" name="clb27526739" data-d="27526746">Дети</a>
            <a class="tabs__dropdown-item i-color-black i-link-no-deco js-click" href="//health.mail.ru/" data-type="health" name="clb28018776" data-d="28018781">Здоровье</a>
            <a class="tabs__dropdown-item i-color-black i-link-no-deco js-click" href="//realty.mail.ru/" data-type="realty" name="clb29615523" data-d="29615521">Недвижимость</a>
            <a class="tabs__dropdown-item i-color-black i-link-no-deco js-click" href="//pets.mail.ru/" data-type="pets" name="clb29397107" data-d="29397116">Питомцы</a>
        </div>
    </div>
</div>
Но мой xpath теперь выдает красивую круглую загогулину - 0 (хотя до этого я ловил -1).
С твоим xpath в коллекцию попадает 5 элементов (пока не смотрел каких (уже глаз замылился), но предполагаю, те что упакованы в div id="tabs:dropdown" class="o-dropdown tabs__dropdown i-hide")
А вот такой xpath
C#:
//div[@class='tabs']/a[contains(@class,'tabs__item')]
равно как и такой
C#:
//div/a[contains(@class,'tabs__item')]
опять возвращают 0.
И вот что это за хня я не догоню. Наверное утро вечера мудренее, продолжу изыскания завтра...
 

ial1408

Client
Регистрация
26.07.2016
Сообщения
191
Благодарностей
18
Баллы
18
Подтверждаю, по старым проектам тоже перестал искать коллекцию элементов. Видимо проблема на стороне программы
 

TwistDanceR

Активный пользователь
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
Ты цитируешь мой код от Яндекс Маркета, но не суть...
У меня было так:
C#:
@"div[@class='tabs']/a"
И именно в том и была задумка - получить в коллекцию только прямых потомков div-а с классом "tabs" которых реально 7. Вот этот кусок html:
HTML:
<div class="tabs">
    <a class="tabs__item js-click is-active" href="//news.mail.ru/" data-type="main" name="clb644113" data-d="660506" tabindex="30">Новости</a>
    <a class="tabs__item js-click" href="http://news.mail.ru/inregions/siberian/54/" data-type="regional" name="clb23640812" data-d="660371" tabindex="31">Новосибирск</a>
    <a class="tabs__item js-click" href="//sportmail.ru" data-type="sport" name="clb644062" data-d="660372" tabindex="32">Спорт</a>
    <a class="tabs__item js-click" href="//lady.mail.ru/" data-type="lady" name="clb644064" data-d="660379" tabindex="33">Леди</a>
    <a class="tabs__item js-click" href="//auto.mail.ru/" data-type="auto" name="clb644114" data-d="660373" tabindex="34">Авто</a>
    <a class="tabs__item js-click" href="//kino.mail.ru/" data-type="cinema" name="clb644116" data-d="660375" tabindex="35">Кино</a>
    <a class="tabs__item js-click" href="//hi-tech.mail.ru/" data-type="hitech" name="clb644118" data-d="660380" tabindex="36">Hi-Tech</a>
    <div id="tabs:dropdown-container" class="o-dropdown__container tabs__item tabs__item_more">
        <span class="tabs__dropdown-button o-dropdown__button js-click" data-type="more" name="clb818633"><svg width="16" height="4" viewBox="0 0 16 4" xmlns="http://www.w3.org/2000/svg"><path d="M2 4a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm6 0a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm6 0a2 2 0 1 0 0-4 2 2 0 0 0 0 4z" fill-rule="evenodd"></path></svg>
        </span>
        <div id="tabs:dropdown" class="o-dropdown tabs__dropdown i-hide">
            <span class="tabs__dropdown-nose"></span>
            <a class="tabs__dropdown-item i-color-black i-link-no-deco js-click" href="//games.mail.ru/pc/" data-type="games" name="clb683645" data-d="683644">Игры</a>
            <a class="tabs__dropdown-item i-color-black i-link-no-deco js-click" href="//deti.mail.ru/" data-type="deti" name="clb27526739" data-d="27526746">Дети</a>
            <a class="tabs__dropdown-item i-color-black i-link-no-deco js-click" href="//health.mail.ru/" data-type="health" name="clb28018776" data-d="28018781">Здоровье</a>
            <a class="tabs__dropdown-item i-color-black i-link-no-deco js-click" href="//realty.mail.ru/" data-type="realty" name="clb29615523" data-d="29615521">Недвижимость</a>
            <a class="tabs__dropdown-item i-color-black i-link-no-deco js-click" href="//pets.mail.ru/" data-type="pets" name="clb29397107" data-d="29397116">Питомцы</a>
        </div>
    </div>
</div>
Но мой xpath теперь выдает красивую круглую загогулину - 0 (хотя до этого я ловил -1).
С твоим xpath в коллекцию попадает 5 элементов (пока не смотрел каких (уже глаз замылился), но предполагаю, те что упакованы в div id="tabs:dropdown" class="o-dropdown tabs__dropdown i-hide")
А вот такой xpath
C#:
//div[@class='tabs']/a[contains(@class,'tabs__item')]
равно как и такой
C#:
//div/a[contains(@class,'tabs__item')]
опять возвращают 0.
И вот что это за хня я не догоню. Наверное утро вечера мудренее, продолжу изыскания завтра...
5.38 версия? у меня на 5.37 просто, все работает как часы
 

ial1408

Client
Регистрация
26.07.2016
Сообщения
191
Благодарностей
18
Баллы
18

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
400
Баллы
63
5.38 версия? у меня на 5.37 просто, все работает как часы
У меня 5,29

Не могу сказать что совсем не работает — я вчера писал, что на страницах Яндекс маркета
C#:
Tab tab = instance.MainTab;
    if ((tab.IsVoid) || (tab.IsNull)) return -1;
    if (tab.IsBusy) tab.WaitDownloading();
    tab.Navigate("https://market.yandex.ru/catalog--protsessory-cpu/55330/list?hid=91019&onstock=1&local-offers-first=0");
    if (tab.IsBusy) tab.WaitDownloading();
  
  
   HtmlElementCollection heCol = instance.ActiveTab.GetDocumentByAddress("0").FindElementsByXPath(@"//div[contains(@class,'n-snippet-card2')]");
  
    // if collection is invalid
    if ((tab.IsVoid) || (tab.IsNull)) return -1;
    return heCol.Count; //Возвращает 922 — считать не стал, но это явно не -1 и не 0!
И на странице https://lessons.zennolab.com/ru/index, FindElementsByXPath работает

C#:
Tab tab = instance.MainTab;
    if ((tab.IsVoid) || (tab.IsNull)) return -1;
    if (tab.IsBusy) tab.WaitDownloading();
    tab.Navigate("https://lessons.zennolab.com/ru/index");
    if (tab.IsBusy) tab.WaitDownloading();
    
    
   HtmlElementCollection heCol = instance.ActiveTab.GetDocumentByAddress("0").FindElementsByXPath(@"//input[@class='inputs']");
    
    // if collection is invalid
    if ((tab.IsVoid) || (tab.IsNull)) return -1;
    return heCol.Count; //Возвращает честные 7 элементов коллекции
Более того, предложенный тобой xpath на mail.ru тоже отрабатывает, но возвращает мне 5 элементов коллекции, хотя судя по html, должен бы вернуть 12 элементов. Вопрос теперь, как выловить где косяк.
 

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
400
Баллы
63

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 690
Баллы
113

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
400
Баллы
63
вот рабочий xpath - //div[contains(@class,'grid') ]/div[contains(@class,'tabs')]/a[contains(@class,'tabs__item')]
Вот полный код с твоим xpath:

C#:
Tab tab = instance.MainTab;
    if ((tab.IsVoid) || (tab.IsNull)) return -1;
    if (tab.IsBusy) tab.WaitDownloading();
    tab.Navigate("https://mail.ru");
    if (tab.IsBusy) tab.WaitDownloading();
   
       HtmlElementCollection heCol = instance.ActiveTab.GetDocumentByAddress("0").FindElementsByXPath(@"//div[contains(@class,'grid') ]/div[contains(@class,'tabs')]/a[contains(@class,'tabs__item')]");
   

    if ((tab.IsVoid) || (tab.IsNull)) return -1;
       
    return heCol.Count;
А вот результат:

Выполнение кода C# Результат: 0
 
Последнее редактирование:

ial1408

Client
Регистрация
26.07.2016
Сообщения
191
Благодарностей
18
Баллы
18
Может разработчики что то ответят по данному вопросу? Работа встала из за этого
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 690
Баллы
113
Вот полный код с твоим xpath:

C#:
Tab tab = instance.MainTab;
    if ((tab.IsVoid) || (tab.IsNull)) return -1;
    if (tab.IsBusy) tab.WaitDownloading();
    tab.Navigate("https://mail.ru");
    if (tab.IsBusy) tab.WaitDownloading();
 
       HtmlElementCollection heCol = instance.ActiveTab.GetDocumentByAddress("0").FindElementsByXPath(@"//div[contains(@class,'grid') ]/div[contains(@class,'tabs')]/a[contains(@class,'tabs__item')]");
 

    if ((tab.IsVoid) || (tab.IsNull)) return -1;
     
    return heCol.Count;
А вот результат:

Выполнение кода C# Результат: 0
все работает, вот скрин
пробовал и под хромом и под FF52. все находит.

 

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
400
Баллы
63
все работает, вот скрин
пробовал и под хромом и под FF52. все находит.

Дык я верю. И мой xpath должен работать — там никаких хитростей вроде нет. Более того, я выше пишу, что на других страницах метод работает. Но вот нас, невольных тестировщиков уже двое — ial1408 пишет о похожих проблемах. А что за версия ZP?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 690
Баллы
113
5.38 версия.
кстати а что это за фигня у вас в коде - GetDocumentByAddress("0") ?
это вообще не нужная вещь в данном случае.
может в этом у вас проблема ? попробуйте убрать.
 

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
400
Баллы
63

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 690
Баллы
113
проблема тут в том что в зенке грузиться другой класс div , не такой как в обычном браузере.
похожий , но другой. возможно защита от ботов так срабатывает. фиг знает

 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 690
Баллы
113

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
400
Баллы
63
Понял. Сейчас поковыряюсь, попробую систематизировать мысли. Пля, щас ребутнул PM — твой xpath отработал, но.. Вернул в коллекцию 5 элементов. 5 Карл! Хотя в реале их 7. А у тебя возвращает 6. Непоняяятно...
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 690
Баллы
113
Понял. Сейчас поковыряюсь, попробую систематизировать мысли. Пля, щас ребутнул PM — твой xpath отработал, но.. Вернул в коллекцию 5 элементов. 5 Карл! Хотя в реале их 7. А у тебя возвращает 6. Непоняяятно...
их не 7 и не 6 и не 5. они динамически появляются. окно больше меньше и они меняются.
 
  • Спасибо
Реакции: semafor

Koqpe

Client
Регистрация
23.12.2014
Сообщения
1 100
Благодарностей
649
Баллы
113
Последнее редактирование:
  • Спасибо
Реакции: semafor

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
400
Баллы
63

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
400
Баллы
63
Ваш путь Xpath отрабатывает правильно пока не с генерируется новое имя класса дива.

Посмотреть вложение 44725
Блин, в двух браузерах смотрел — класс дива "tabs" онли, без всяких динамических приколов. А в св-вах элемента PM не смотрел, как-то не сложилось у меня с ним — не по глазам.
 

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
400
Баллы
63
Таки можно ставить точку. Наверное.

Результаты изысканий таковы — видимо вчера, в процессе ковыряний произошло некое частичное подвисание PM (у меня так уже бывало, пока не ребутнешь — нигугу). А дальше, в попытках разобраться, начал городить, и чем дальше тем больше.
После нескольких тычков объединил навигейт и FindElementsByXPath в один кубик, и началась сра№ая магия 8-) с перманентным выносом мозга...

Изначально загрузка страницы и сбор коллекции производились в разных кубиках, отсюда взялся GetDocumentByAddress("0") (это к вопросу Phoenix78):

кстати а что это за фигня у вас в коде - GetDocumentByAddress("0") ?
это вообще не нужная вещь в данном случае.
И таки да, в одном кубике такой код вызывает ошибку:


C#:
Tab tab = instance.ActiveTab;
if ((tab.IsVoid) || (tab.IsNull)) return -1;
if (tab.IsBusy) tab.WaitDownloading();
tab.Navigate("https://mail.ru/", "");
if (tab.IsBusy) tab.WaitDownloading();

//такое выражение в данном контексте не работет и вызывает ошибку получения коллекции, однако при использовании в отдельном от навигейта кубике вполне будет работать
HtmlElementCollection heCol = instance.ActiveTab.GetDocumentByAddress("0").FindElementsByXPath(@"//a[contains(@class, 'tabs__item js-click')]");

//Если сбор коллекции производится в одном кубике с navigate, рабчие варианты следующие
HtmlElementCollection heCol = tab.FindElementsByXPath(@"//a[contains(@class, 'tabs__item js-click')]"); // наверное более правильный и изящный, т.к. tab мы уже объявили в начале кубика и нефиг повторяться
HtmlElementCollection heCol = instance.ActiveTab.FindElementsByXPath(@"//a[contains(@class, 'tabs__item js-click')]"); // этот покорявее, но тоже рабочий.
Большое спасибо всем за помощь!
 

ial1408

Client
Регистрация
26.07.2016
Сообщения
191
Благодарностей
18
Баллы
18
У меня к сожалению так и не заработало. Так и не находит коллекцию которая в хроме находится с помощью плагина Xpath helper. У меня всегда сделано через tab.FindElementsByXPath("xpath").

UPD: Сейчас сделал тестовый проект где наглядно показано что в отдельном элементе видит таблицу, а в коллекции элементов не видит (пути Xpath в обоих случаях одинаковы). Кому не трудно, скопируйте пожалуйста в отдельный кубик и запустите. Что лог выдаст?
У меня выдает:
Всего элементов: 0
Всего таблиц: 0
Есть таблица



Код:
Tab tab1 = instance.ActiveTab;
tab1.Navigate("https://autoresurs24.ru/parts/?mark=&raw_part_type=%D0%94%D0%B2%D0%B8%D0%B3%D0%B0%D1%82%D0%B5%D0%BB%D1%8C&part_type=&do_search=1&bibnet_page=1&perpage=30&is_hide_autorazborka=on");
tab1.WaitDownloading();
tab1.FindElementByXPath("//input[@value='показать запчасти']",0).Click(); // жмем на кнопку показать запчасти

//Ждем пока прогрузятся все запчасти
for (int l=0; l<30; l++){
    if (tab1.FindElementByXPath("//table[contains(@class,'goods')]/tbody/tr/th[text()='Цена']/parent::tr/following-sibling::tr",0).IsVoid){
        Thread.Sleep(200);
    }else break;
}

//Надо найти эту коллекцию
HtmlElementCollection colItems = tab1.FindElementsByXPath("//div[@id='bibinet_result']/table/tbody/tr");
project.SendInfoToLog("Всего элементов: " + colItems.Count.ToString());

//Для теста делаем что бы понять видит ли зенка вообще таблицу в коллекции и в отдельном элементе
HtmlElementCollection colItemsTest = tab1.FindElementsByXPath("//div[@id='bibinet_result']/table"); // в коллекции не видит таблиц
project.SendInfoToLog("Всего таблиц: " + colItemsTest.Count.ToString());

if (tab1.FindElementByXPath("//div[@id='bibinet_result']/table",0).IsVoid){ // в отдельном элементе видет таблицу
    project.SendInfoToLog("Нету таблицы");
}else{
    project.SendInfoToLog("Есть таблица");
}
 
Последнее редактирование:

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 690
Баллы
113
под движком хрома не работает, под файрфокс 52 все находит. это точно баг хрома. смело заводи в баг трекер, авось починят через пару лет.
ужас какой то, хром вообще не рабочий. xpath через раз не находит, драгдроп мышки не работает, вылетает в 10 раз чаще, перезапуск вылетевшего шаблона по 5 минут происходит.
я с выходом каждого обновления все надеюсь ну вот щас то норм все будет... а оно все хуже и хуже. придется бросить эту идею с переписыванием шабов на хром.
огорчает только что в тикетах разрабы советуют переходить на хром, забросили файрфокс .... а хром то не рабочий от слова совсем !
 
  • Спасибо
Реакции: TwistDanceR

Koqpe

Client
Регистрация
23.12.2014
Сообщения
1 100
Благодарностей
649
Баллы
113
Запуск в зеннопостере 5.29.5.0:
1. Ваш код, брузер хром, при каждом запуске новая генерация профиля:
17 попыток: 8 раз есть таблица, 9 раз нет

2. Ваш код, брузер хром, загрузка одного и того же профиля:
17 попыток: 13 раз есть таблица, 4 раз нет

3. Добавил в код установку размера окна и паузу 3с после цикла for:
C#:
int width = project.Profile.AvailScreenWidth;
int height = project.Profile.AvailScreenHeight;
instance.SetWindowSize(width, height);
17 попыток: 13 раз есть таблица, 4 раз нет

P.S Добавил в if instance.WaitForUserAction(900); после сообщения "Нету таблицы", что бы посмотреть что прогрузилось на странице, 20 "Есть таблица" из 20 попыток:D
 
Последнее редактирование:

ial1408

Client
Регистрация
26.07.2016
Сообщения
191
Благодарностей
18
Баллы
18
под движком хрома не работает, под файрфокс 52 все находит
Если это Вы на мой комментарий написали то у меня firefox52 стоит
придется бросить эту идею с переписыванием шабов на хром
Небольшой оффтоп, объясните пожалуйста в двух словах что значит, как это выглядит и зачем переписывать под хром. Дом модель же вроде в обоих браузерах одинакова. Реально пока не понимаю.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)