![]() |
|
Модераторы: diadiavova, gambit |
![]()
|
|
| gangsterovich |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 22.10.2011 Репутация: 1 Всего: 1 |
простой клик получается сделать
вот так.тоесть когда у кнопки есть value или id проблем не возникает но когда дебаггер выдает только вот это
как организовать клик?помогите плиз
Это сообщение отредактировал(а) diadiavova - 25.10.2011, 18:18 |
||||||
|
|||||||
| gangsterovich |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 22.10.2011 Репутация: 1 Всего: 1 |
мне вот сказали "инвентарь находится прямым перебором ссылок и нахождением в innerText(или innerHTML) слова "Инвентарь" "
подскажите как это реализовать? |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
У документа вызови метод GetElementsByTagName в качестве аргумента передай "A", таким образом получишь коллекцию ссылок. Дальше обойди коллекцию и найди такую ссылку, в которой свойство InnerHTML имеет нужное тебе значение. Код не привожу, поскольку он элементарен. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| gangsterovich |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 22.10.2011 Репутация: 1 Всего: 1 |
на данном этапе для меня самое элементарное-очень сложное.часов по 12 в сутки учу vb.net .сейчас уперся в вот это. если всм не сложно, напишите элементарный код.заранее спасибо
вот так?это без перебора по логике вот это тоже должно работать..хотя непашет почемуто..
Это сообщение отредактировал(а) gangsterovich - 26.10.2011, 00:30 |
||||
|
|||||
| diadiavova |
|
||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
gangsterovich, Честно говоря, не очень понятно, что именно ты хочешь найти в документе. В первом посте ты писал, что нужно кнопка, но в примере кода у тебя была не кнопка, а ссылка. Сейчас ты приводишь код, в котором ищешь элементы input и он(на сколько я понял) находит то что надо, далее пытаешься сделать то же самое со ссылками и это не работает. Document.Links будет находить ссылки, то есть элементы A, а не input. Естественно, учитывая, что в твоих примерах обходятся совершенно разные коллекции, стало быть и результат тоже будет разным. Если искать то, что у тебя в первом посте приведено, то код будет примерно следующим
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
||||
|
|||||
| gangsterovich |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 22.10.2011 Репутация: 1 Всего: 1 |
странно. ничего не происходит.возможно что страница разбита на фрэймы.
дебагер показывает
взял кусок из html кода,связанного с инвентарем
за некорректные вопросы уж извините,но надеюсь я вам вскоре на форуме тоже буду помогать.. |
||||
|
|||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
gangsterovich, так, а чего ты хочешь? Чтобы я угадал, разбита ли страница на фреймы? Я не могу тебе показать, как найти неизвестно что на странице с неизвестной мне структурой
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| gangsterovich |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 22.10.2011 Репутация: 1 Всего: 1 |
упс.незнал.для фрейма 8 это будет выглядеть так?
или фрэйм как-то обьявлять надо? Это сообщение отредактировал(а) gangsterovich - 26.10.2011, 00:50 |
|||
|
||||
| diadiavova |
|
||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
Не совсем. У класса HtmlDocument нет свойства Frames, поэтому его вызов приведет к ошибке. Все-таки тут надо понимать, что ты в данном случае имеешь дело с управляемыми оболочками, а не с типами из библиотеки mshtml непосредственно, а в оболочках реализовано далеко не все. Если ты хочешь в своем коде иметь доступ ко всем возможностям DOM, то тут надо либо подключать к проекту библиотеку mshtml и работать с ней(но там тоже есть нюансы, которые надо знать и понимать), либо можно воспользоваться поздним связыванием и работать так. Для второго варианта код тебе придется слегка изменить
Обрати внимание, что свойство frames вызывается не у самого документа(управляемой оболочки), а у неуправляемого объекта, вызываемого через свойство DomDocument. К сожалению обойти эту коллекцию с помощью конструкции For Each не получится, поскольку при использовании позднего связывания всегда возвращается тип Object, но обычный цикл со счетчиком вполне должен сработать. Так же обрати внимание, что коллекцию я индексирую не напрямую, а через метод item, это тоже связано с тем, что Object может и не проиндексироваться (честно говоря точно не помню, сработает это или нет, но вызов метода сработать должен точно). То есть дальше будет что-то типа
Это сообщение отредактировал(а) diadiavova - 26.10.2011, 01:12 -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
||||
|
|||||
| Lols |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 21.10.2011 Репутация: нет Всего: нет |
Я начинаю путаться, если честно. Так каким образом сделали клик? Или все же остановились на ссылке?
|
|||
|
||||
| gangsterovich |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 22.10.2011 Репутация: 1 Всего: 1 |
Lols, пока топчусь на месте.клик по кнопке сделать нетяжело.тк у кнопки есть id и value.а вот найти нужную ссылку и кликнуть по ней,тут надо поднапрячься...
этот код вызывает остановку отладки после запуска этого кода а как вообще узнать кол-во фреймов на странице и что в них содержится? обычным дебаггером? вроде как рабочий код ,но я в нем не разобрался,неудалось и его запустить.тут должен быть перебор всех ссылок в фрейме
Это сообщение отредактировал(а) gangsterovich - 26.10.2011, 02:16 |
||||
|
|||||
| diadiavova |
|
||||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
Ну вообще-то этот код и не должен был работать, я тут только показал, на что надо обратить внимание и как исправить твой код. Остановиться он может из-за чего угодно, например для его работы надо чтобы в документе было как минимум девять фреймов, что маловероятно, если мы говорим о реальной вебстранице. Кроме того, в коде ниже правильно написано, что сначала у фрейма надо вызвать свойство document, ну это уже нюансы DOM.
Ну если ты получишь коллекцию фреймов, то у нее есть свойство length ( это если речь о неуправляемой коллекции).
Был бы он рабочим, отчего бы его не удалось запустить? Вот это brwWebBrowser.Document.frames(8) никак не может быть рабочим, поскольку у документа нет свойства frames http://msdn.microsoft.com/ru-ru/library/sy...properties.aspx другой вопрос, если здесь использовался не стандартный веб-браузер, а ком-компонент, то там это было бы возможно. Посмотри внимательнее там, откуда ты взял этот код. И кстати вводить счетчик в форич - изврат. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
||||||
|
|||||||
| gangsterovich |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 22.10.2011 Репутация: 1 Всего: 1 |
скажите,а как вот это расшифровать?
Принцип такой: WebBrowser1.Document - это объект, который имеет такую же объектную модель, как и DOM (это он собственно говоря и есть). То есть, если мы выполним: Код:
то получим объект, то же документ, но это будет лишь часть документа, которая заключена в <SPAN id=menu4>...<\SPAN> далее: Код:
получим массив, со всеми ссылками, нам же нужна первая, на которой надо выполнить метод клик. В итоге получим строку типа: Код:
|
||||||
|
|||||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
Здесь точка пропущена
Зачем от документа снова возвращаться к браузеру? WebBrowser1.Document.GetElementByID вполне достаточно. А вообще последнего вопроса я не понял. Точнее не понял в чем вопрос. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| gangsterovich |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 22.10.2011 Репутация: 1 Всего: 1 |
"И кстати обрабатывать страницу не так уже и сложно, если загружать в переменную не хтмл код страницы а только текст который виден, тогда проще маску сделать и уже вытащить все параметры которые нужны"
кстати.обьясните пожалуйста,что такое "маска" |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
Это вопрос к тому, кто это написал. Я, честно говоря, смысл этой фразы не понял. Возможно она имеет какое-то значение в определенном контексте, но мне этот контекст неизвестен. Обрабатывать страницу проще, если использовать DOM, а вот манипуляции с текстом могут иметь непредсказуемые результаты, особенно если обрабатывать хтмл как текст. Это все, что могу сказать по этому поводу. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| gangsterovich |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 22.10.2011 Репутация: 1 Всего: 1 |
такюссылку найти могу.но кликнуть то как по ней?
в строке 6 wabpageelement подчеркивается.почему? мда..хотя даже зная ссыль такую,некатит в моем случае.тк генерится все время новая.надо всетаки по названию делать Это сообщение отредактировал(а) gangsterovich - 28.10.2011, 18:29 |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
Может быть имя не так написано? Когда копируешь знаешь, может оно внешне похоже, а там какая-нибудь русская буква затесалась где-нибудь. Всяко бывает -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
![]()
|
| Правила форума VB .NET | |
|
|
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |