Что нового

[Сеть, интернет] Выбрать определенное значение из списка в окне IE.

HORRIBLE

Знающий
Сообщения
22
Репутация
10
Код:
#include <IE.au3>
$oIE = _IECreate("www.vkontakte.ru")
WinSetState("В Контакте | Добро пожаловать - Windows Internet Explorer", "", @SW_MAXIMIZE)
_IELoadWait($oIE)
$oDivs = _IETagNameGetCollection ($oIE, "DIV")
For $oDiv In $oDivs
      if StringInStr($oDiv.id,"container0") then
         $oInputs = _IETagNameGetCollection ($oIE, "INPUT")
         For $oInput In $oInputs
	if StringInStr($oInput.value,"- Не выбран -") then
	   ;$oInput.value = "мужской"
	   _IEAction($oInput,"focus")
	   _IEAction($oInput,"click")
	   ;Sleep(1000)
	   $oLIs = _IETagNameGetCollection ($oIE, "LI")
	   $i = 0
	   ConsoleWrite("Кол-во найденных <LI> = "&@EXTENDED&@CRLF)
	   For $oLI In $oLIs
	         $i += 1
		ConsoleWrite($i&". $oInputt.value = "&$oLI.value &@CRLF&$i&". $oInputt.innertext = "&$oLI.innertext&@CRLF)
;___________________________________________________________________________________________________________
;___________________________не понятки..._____________________________________________________________________
		if StringInStr($oLI.innertext,"мужской") then
		   ConsoleWrite("!!!!!!!!!!!!!!!!!!!! вот он под номером: "&$i&@CRLF)
		   ;$oInput.value = "мужской"
		   ;_IEAction($oLI,"focus")
		   ;_IEAction($oLI,"click")
                               $iScreenX = _IEPropertyGet($oLI, "screenx")
		   $iScreenY = _IEPropertyGet($oLI, "screeny")
		   MouseClick("left",$iScreenX+20, $iScreenY+15)
		   ;ControlClick("[CLASS:IEFrame]", "", "Internet Explorer_Server1", "left", 1, $iScreenX+20, $iScreenY)
		EndIf
;______________________________________________________________________________________________________________
		;ExitLoop
	   Next
             ExitLoop
             EndIf
       Next
       ExitLoop
EndIf
Next


_IELinkClickByText($oIE,"Зарегистрироваться")

Вся проблема вот начинается с этой строчки: if StringInStr($oLI.innertext,"мужской") then
Все находится, кликается мышкой, а от _IEAction нет ни какого результата.
такое тоже не подходит:
Код:
#include <IE.au3>

$oIE = _IECreate("vkontakte.ru/reg0")
_IELoadWait ($oIE)
Sleep(2577)
$oInput = _IEGetObjById ($oIE, "sex")
_IEFormElementSetValue ($oInput, "мужской")


2. Каким образом можно выбрать "Только я" из того списка, что раскрывается? код ниже.
Код:
#include <IE.au3>
$oIE =	_IECreate("http://vkontakte.ru/settings.php?act=privacy")
		_IELoadWait($oIe)
$oForm 	=	_IEFormGetObjByName($oIe, "login")
$login 	= 	_IEFormElementGetObjByName  ($oForm, "email")
$pass 	= 	_IEFormElementGetObjByName  ($oForm, "pass")
				_IEFormElementSetValue ($login, "[email protected]")
				_IEFormElementSetValue ($pass, "rmt1gje0wmie")
				_IEFormSubmit ($oForm)
				_IELoadWait($oIe)
				$pp_wall = _IEGetObjByName($oIE, 'pp_wall')
				$pp_wall.click
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
HORRIBLE [?]
2. Каким образом можно выбрать "Только я" из того списка, что раскрывается? код ниже.
Код:
#include <IE.au3>
$oIE = _IECreate("http://vkontakte.ru/settings.php?act=privacy")
$oA = _IEGetObjById ($oIE, "pp_friends")
MsgBox(0, "Link Text", $oA.innerText)



Добавлено:
Сообщение автоматически объединено:

При входе на страницу id="container0" нет.
Код:
#include <IE.au3>
$oIE = _IECreate("www.vkontakte.ru")
$oDivs = _IETagNameGetCollection($oIE,"div")
For $oDiv In $oDivs
	If $oDiv.id <> 0 And $oDiv.id = "container0" Then
		ConsoleWrite($oDiv.id &@CRLF)
	Else
Next
 
Автор
H

HORRIBLE

Знающий
Сообщения
22
Репутация
10
Код:
#include <IE.au3>
$oIE = _IECreate("http://vkontakte.ru/settings.php?act=privacy")
$oA = _IEGetObjById ($oIE, "pp_friends")
MsgBox(0, "Link Text", $oA.innerText)

[/quote]
Эм, а далее как вы предполагаете, вы же тут только получите текст, тот который сейчас находится в $oA, но не как полный список пунктов.
Чет Debagbar сейчас выдал информацию по выпадающему списку, вот так получилось выбрать.:
Код:
$pp_wall = _IEGetObjByName($oIE, 'pp_friends')
                $pp_wall.click
	  $only_me = _IEGetObjById ($oIE, "ppItem3")
	  $only_me.click
ОДИН ВОПРОС РЕШИЛСЯ.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Эм, а далее как вы предполагаете, вы же тут только получите текст, тот который сейчас находится в $oA, но не как полный список пунктов.
:blink:
Вы же сами написали:
Каким образом можно выбрать "Только я" из того списка, что раскрывается? код ниже.
про список тут не написано :smile:


Добавлено:
Сообщение автоматически объединено:

Чтобы ответить на первый вопрос, скажите, где вы нашли на странице id="container0" ?
 
Автор
H

HORRIBLE

Знающий
Сообщения
22
Репутация
10
Добавлено:
Сообщение автоматически объединено:

Чтобы ответить на первый вопрос, скажите, где вы нашли на странице id="container0" ?
Вот смотрите я скопировал ваш выше написанный код + заменил Else на End и добавил $i чтобы нумерацию сделать.
Мне в нем не понятна строка: $oDiv.id <> 0 <--- что это делает?
Вот, что имеем если это непонятное выражение убрать:
Код:
#include <IE.au3>
$oIE = _IECreate("www.vkontakte.ru")
$oDivs = _IETagNameGetCollection($oIE,"div")
$i = 0
For $oDiv In $oDivs
	ConsoleWrite($i &". "&$oDiv.id &@CRLF)
    If $oDiv.id == "container0" Then
        ConsoleWrite("!!!!!!!!!!!!!"&$oDiv.id&"!!!!!!!!!!!!!!!" &@CRLF)
    EndIf
	$i +=1
Next

Под номером 40 будет и ниже красным выделено это он).

Garrett сказал(а):
Эм, а далее как вы предполагаете, вы же тут только получите текст, тот который сейчас находится в $oA, но не как полный список пунктов.
:blink:
Вы же сами написали:
Каким образом можно выбрать "Только я" из того списка, что раскрывается? код ниже.
про список тут не написано :smile:

Скопировал свой вопрос сверху.: 2. Каким образом можно выбрать "Только я" из того списка, что раскрывается? код ниже.

Вроде как написано. :smile:
Но это не важно. Спасибо. Я с этим разобрался.
Осталось только выбрать пол.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
HORRIBLE [?]
Под номером 40 будет и ниже красным выделено это он).
На картинки он? :smile:
Вот мой вопрос: Каким образом можно выбрать "Только я" из того списка, что раскрывается?
Я и выбрал вам "Только я" !
Однако из ниже следующего я понял, что вам нужен полный список? Или нет?
[?]
Эм, а далее как вы предполагаете, вы же тут только получите текст, тот который сейчас находится в $oA, но не как полный список пунктов
 
Автор
H

HORRIBLE

Знающий
Сообщения
22
Репутация
10
Цитата
Вот мой вопрос: Каким образом можно выбрать "Только я" из того списка, что раскрывается?
Я и выбрал вам "Только я" !
Однако из ниже следующего я понял, что вам нужен полный список? Или нет?
Мне нужно было выбрать "Только я" из того списка (все пользователи, только друзья, друзья и друзья друзей, Только я, Все, кроме...) который отобразится после выполнения $pp_wall.click.
Плохо обрисовал, что мне надо было, извиняюсь.

Вот это зачем нужно было?? $oDiv.id <> 0

Garrett сказал(а):
HORRIBLE [?]
Под номером 40 будет и ниже красным выделено это он).
На картинки он? :smile:
Вау, фантастика, вот, что я вижу у себя:
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
HORRIBLE [?]
Вау, фантастика, вот, что я вижу у себя:
Понятно нужен скрипт для регистрации. :smile:
Код:
;~ Нам нужны
;~ -------------------------
;~ input name="first_name"
;~ input name="last_name"
;~ input name="regemail"
;~ input name="regpass"
;~ input name="sex"
;~ <a href="#register" onclick="return register();">Зарегистрироваться</a>
;~ -------------------------
#include <IE.au3>
$oIE = _IECreate("www.vkontakte.ru")
$oInputs = _IETagNameGetCollection ($oIE, "input")
For $oInput In $oInputs
	If $oInput.name = "sex" Then
		_IEFormElementSetValue ($oInput, "2") ; 0 - не выбран, 1 - женский, 2 - мужской
	ElseIf $oInput.name = "last_name" Then
		_IEFormElementSetValue ($oInput, "Last Name")
	ElseIf $oInput.name = "regemail" Then
		_IEFormElementSetValue ($oInput, "[email protected]")
	ElseIf $oInput.name = "regpass" Then
		_IEFormElementSetValue ($oInput, "Password")
	ElseIf $oInput.name = "first_name" Then
		_IEFormElementSetValue ($oInput, "Name")
	EndIf
Next
_IELinkClickByText ($oIE, "Зарегистрироваться")
 
Автор
H

HORRIBLE

Знающий
Сообщения
22
Репутация
10
:laugh:, сколько я с этим тр......... возился. А оказалось все так просто.
У меня заполнение других поле уже было написано, оставалось только выставление М или Ж.
Спасибо.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Рад помочь!
 

maxim

Новичок
Сообщения
2
Репутация
0
А подскажите пожалуйста, как сделать выбор из выпадающего меню, которое написано не на HTML с Дивами ,а на JavaScript?
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
maxim
Дайте ссылку, где надо выбрать, посмотрим.
 

maxim

Новичок
Сообщения
2
Репутация
0
Garrett, код меню кинул в личку, ссылку дать не могу, так как меню находится на странице закрытой для неавторизированных. Заранее спасибо!
 

redwert

Новичок
Сообщения
9
Репутация
0
Garrett сказал(а):
Понятно нужен скрипт для регистрации. :smile:
Код:
;~ Нам нужны
;~ -------------------------
;~ input name="first_name"
;~ input name="last_name"
;~ input name="regemail"
;~ input name="regpass"
;~ input name="sex"
;~ <a href="#register" onclick="return register();">Зарегистрироваться</a>
;~ -------------------------
#include <IE.au3>
$oIE = _IECreate("www.vkontakte.ru")
$oInputs = _IETagNameGetCollection ($oIE, "input")
For $oInput In $oInputs
	If $oInput.name = "sex" Then
		_IEFormElementSetValue ($oInput, "2") ; 0 - не выбран, 1 - женский, 2 - мужской
	ElseIf $oInput.name = "last_name" Then
		_IEFormElementSetValue ($oInput, "Last Name")
	ElseIf $oInput.name = "regemail" Then
		_IEFormElementSetValue ($oInput, "[email protected]")
	ElseIf $oInput.name = "regpass" Then
		_IEFormElementSetValue ($oInput, "Password")
	ElseIf $oInput.name = "first_name" Then
		_IEFormElementSetValue ($oInput, "Name")
	EndIf
Next
_IELinkClickByText ($oIE, "Зарегистрироваться")

А как сейчас заставить работать выпадающие списки в контакте. Взял для примера этот скрипт, но он уже не работает. Помогите пожалуйста
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
redwert [?]
А как сейчас заставить работать выпадающие списки в контакте.
В контакте не знаю, но попробуйте сделать на основе этого:
Код:
#include <IE.au3>

Dim $aDomain[4][2] = [['mail.ru', 'Вася'],['inbox.ru', 'Петя'],['bk.ru', 'Коля'],['list.ru', 'Иван']]
$sUrl = 'http://www.mail.ru/'

$oIE = _IECreate($sUrl)
$oForm = _IEFormGetObjByName($oIE, 'Auth')
$oDomain = _IEFormElementGetObjByName($oForm, 'Domain')
$oUser = _IEGetObjByName($oIE, 'login')

For $i = 0 To 3
	_IEFormElementOptionSelect($oDomain, $aDomain[$i][0])
	_IEFormElementSetValue($oUser, $aDomain[$i][1])
	Sleep(2000)
Next

_IEFormElementOptionSelect($oDomain, $aDomain[0][0])
_IEFormElementSetValue($oUser, '')
 

redwert

Новичок
Сообщения
9
Репутация
0
А как сейчас заставить работать выпадающие списки в контакте.
В контакте не знаю, но попробуйте сделать на основе этого:
[/quote]

Это тоже самое что и предыдущий скрипт- не подходит.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
redwert [?]
выпадающие списки в контакте
Списки в контакте основаны на DIV`х, они до момента их вызова спрятаны, атрибутом или стилем со значением hide. Чтобы до них добраться вам нужно, сначала получить их ID, NAME, и только потом отслеживать их появление. А уж когда они появятся, то считайте они у вас в кармане ;)
 

redwert

Новичок
Сообщения
9
Репутация
0
Garrett сказал(а):
redwert [?]
выпадающие списки в контакте
Списки в контакте основаны на DIV`х, они до момента их вызова спрятаны, атрибутом или стилем со значением hide. Чтобы до них добраться вам нужно, сначала получить их ID, NAME, и только потом отслеживать их появление. А уж когда они появятся, то считайте они у вас в кармане ;)

Напишите, пожалуйста, коротенький пример. Я пока новичек, я понимаю про что вы говорите, а вот написать это уже сложнее.
 
Верх