Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Поиск ссылки внутри тега в Internet Explorer - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поиск ссылки внутри тега в Internet Explorer (Макросы Sub)
Поиск ссылки внутри тега в Internet Explorer
fanar6 Дата: Четверг, 17.10.2013, 10:25 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Задача - актуализировать товар на сайте.
Для этого есть прайс лист поставщиков (exel) и админка (Web).
Уже сделано: Сравнивает прайс лист магазина и то, что на сайте в наличии или отсутствует.
Умеет менять 100500+ параметров внутри каждого товара (снимает, ставит галочки, меняет содержание ячейки цена, старая цена, новая цена, изменяет значение выпадающего меню).

В основном работаю с функцией: getElementsByName("Имя изменяющегося поля" ;) .Item(0).Value = ....

ЧТО НАДО и В ЧЕМ ТРУДНОСТЬ:
Открываем Експлорер на главной странице админки интернет-магазина. Она представляет собой следующий вид:
УправляющаяФигня ТОВАР_1 различная_управляющая_аброкадабра
УправляющаяФигня ТОВАР_2 различная_управляющая_аброкадабра
...

Таких строчек более 1000.
Надо, чтоб макрос находил ссылку на нужный товар и кликал по нему.
Например, нужно изменить карточку ТОВАР_2.
Ссылка записана как тег: ТОВАР_2
(открываем галку a class="cat_ttl" href="javascript:"> ТОВАР_2 </a закрываем галку)

Т.Е. поля Name, с которым у меня получалось отлично работать, отсутствует, а поле Class макрос как-то очень криво ищет, точнее не ищет, и я не могу добиться того, чтоб VBA понимал куда ему надо кликать....
При чем поле Class="cat_ttl" у ВСЕХ товаров одинаково и надо искать так же само название товара (ТОВАР_2) внутри тега и кликать по нему

На другом форуме узнал о поддержке в 8 версии Експлорера поддерживается функция getElementsByClassName . Был предложен для реаз\лизации код:
[vba]
Код
my_coll= IE.Document.getElementsByClassName("cat_ttl")
for i = 0 to my_coll.length -1
if my_coll(i).innertext = "Товар_2" then my_coll(i).click : exit for
next i
[/vba]
Но он находит только один элемент с классом cat_ttl (самый первый), а условие my_coll(i).innertext = "Товар_2" отрабатывает всегда TRUE и уходит из цикла с i=1 и не куда не кликает...

P.S. Может быть есть функция, которая просто искала бы текст на сайте, а потом кликала по нему... Что-то вроде FindText("Товар_2" ;) .Click ??
 
Ответить
СообщениеЗадача - актуализировать товар на сайте.
Для этого есть прайс лист поставщиков (exel) и админка (Web).
Уже сделано: Сравнивает прайс лист магазина и то, что на сайте в наличии или отсутствует.
Умеет менять 100500+ параметров внутри каждого товара (снимает, ставит галочки, меняет содержание ячейки цена, старая цена, новая цена, изменяет значение выпадающего меню).

В основном работаю с функцией: getElementsByName("Имя изменяющегося поля" ;) .Item(0).Value = ....

ЧТО НАДО и В ЧЕМ ТРУДНОСТЬ:
Открываем Експлорер на главной странице админки интернет-магазина. Она представляет собой следующий вид:
УправляющаяФигня ТОВАР_1 различная_управляющая_аброкадабра
УправляющаяФигня ТОВАР_2 различная_управляющая_аброкадабра
...

Таких строчек более 1000.
Надо, чтоб макрос находил ссылку на нужный товар и кликал по нему.
Например, нужно изменить карточку ТОВАР_2.
Ссылка записана как тег: ТОВАР_2
(открываем галку a class="cat_ttl" href="javascript:"> ТОВАР_2 </a закрываем галку)

Т.Е. поля Name, с которым у меня получалось отлично работать, отсутствует, а поле Class макрос как-то очень криво ищет, точнее не ищет, и я не могу добиться того, чтоб VBA понимал куда ему надо кликать....
При чем поле Class="cat_ttl" у ВСЕХ товаров одинаково и надо искать так же само название товара (ТОВАР_2) внутри тега и кликать по нему

На другом форуме узнал о поддержке в 8 версии Експлорера поддерживается функция getElementsByClassName . Был предложен для реаз\лизации код:
[vba]
Код
my_coll= IE.Document.getElementsByClassName("cat_ttl")
for i = 0 to my_coll.length -1
if my_coll(i).innertext = "Товар_2" then my_coll(i).click : exit for
next i
[/vba]
Но он находит только один элемент с классом cat_ttl (самый первый), а условие my_coll(i).innertext = "Товар_2" отрабатывает всегда TRUE и уходит из цикла с i=1 и не куда не кликает...

P.S. Может быть есть функция, которая просто искала бы текст на сайте, а потом кликала по нему... Что-то вроде FindText("Товар_2" ;) .Click ??

Автор - fanar6
Дата добавления - 17.10.2013 в 10:25
Скрипт Дата: Пятница, 18.10.2013, 12:40 | Сообщение № 2
Группа: Проверенные
Ранг: Участник
Сообщений: 61
Репутация: 25 ±
Замечаний: 0% ±

Excel 2013
fanar6, в html-содержимом страницы должна быть ссылка. Эту ссылку нужно подставить сюда:
[vba]
Код
myIE.Navigate myHypelink.href
[/vba]
где myIE - это Internet Explorer;
myHypelink - гиперссылка.

И кликать не нужно. К тому же кликание не приводит к изменению "IE.Document". Т.е. IE.Document будет представлять страницу, куда Вы ранее перешли с помощью "Navigate".

Если выложите на Форуме ссылку на сайт, на котором нужно найти ссылку, то получится написать более точно.
 
Ответить
Сообщениеfanar6, в html-содержимом страницы должна быть ссылка. Эту ссылку нужно подставить сюда:
[vba]
Код
myIE.Navigate myHypelink.href
[/vba]
где myIE - это Internet Explorer;
myHypelink - гиперссылка.

И кликать не нужно. К тому же кликание не приводит к изменению "IE.Document". Т.е. IE.Document будет представлять страницу, куда Вы ранее перешли с помощью "Navigate".

Если выложите на Форуме ссылку на сайт, на котором нужно найти ссылку, то получится написать более точно.

Автор - Скрипт
Дата добавления - 18.10.2013 в 12:40
fanar6 Дата: Четверг, 24.10.2013, 17:47 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Спасибо большое! Именно так в конечном итоге и сделал...
Однако, изначально цель была, не извлекая id-номер продукции из базы данных, искать ее в списке по имени.... Но в итоге по имени найти не удалось (точнее удалось, но перейти по ссылке не удалось), пришлось извлекать id, связывать с именем и уже потом переходить по ссылке по вашему алгоритму...

Итак проблема решена, всем спасибо за помощь!!!
Если кому помощь нужна по работе с IE обращайтесь.... Я уже столько узнал про него :)))


Сообщение отредактировал fanar6 - Четверг, 24.10.2013, 17:48
 
Ответить
СообщениеСпасибо большое! Именно так в конечном итоге и сделал...
Однако, изначально цель была, не извлекая id-номер продукции из базы данных, искать ее в списке по имени.... Но в итоге по имени найти не удалось (точнее удалось, но перейти по ссылке не удалось), пришлось извлекать id, связывать с именем и уже потом переходить по ссылке по вашему алгоритму...

Итак проблема решена, всем спасибо за помощь!!!
Если кому помощь нужна по работе с IE обращайтесь.... Я уже столько узнал про него :)))

Автор - fanar6
Дата добавления - 24.10.2013 в 17:47
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поиск ссылки внутри тега в Internet Explorer (Макросы Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!