Что нового

[Автоматизация] IE 9 не получаеться нажать на кнопку входа

msgim

Новичок
Сообщения
10
Репутация
0
Всем доброго вечера!
Много читал ваш форум и всегда находил ответы на свои вопросы! Но увы пришел тот час, прошу помощи.

Хочу автоматизировать вход на сайт (Joomla), вроде все правильно делаю, передаются и логин и пароль но нажать кнопку вход не могу, помогите плиз!

Код:
#include <IE.au3>

Func ie_login()
	
$oIE   =_IECreate("http://xxxx.com.ua/index.php?option=com_user&view=login", 1, 1) 
$oForm =_IEFormGetObjByName($oIE,"com-login")
$oUser =_IEFormElementGetObjByName($oForm,"username")
$oPass =_IEFormElementGetObjByName($oForm,"passwd")
_IEFormElementSetValue ($oUser, 'dimon_1')
_IEFormElementSetValue ($oPass, '1234567')
_IELoadWait($oIE)

$oSubmit = _IEGetObjByName ($oIE, "Submit")
_IEAction ($oSubmit, "click")
_IELoadWait ($oIE)

EndFunc
 

Arei

Скриптер
Сообщения
938
Репутация
115
ты случайно забыл, объявить функцию
Код:
ie_login()


а точнее
Код:
#include <IE.au3>


 ie_login()



Func ie_login()
    
$oIE   =_IECreate("http://xxxx.com.ua/index.php?option=com_user&view=login", 1, 1) 
$oForm =_IEFormGetObjByName($oIE,"com-login")
$oUser =_IEFormElementGetObjByName($oForm,"username")
$oPass =_IEFormElementGetObjByName($oForm,"passwd")
_IEFormElementSetValue ($oUser, 'dimon_1')
_IEFormElementSetValue ($oPass, '1234567')
_IELoadWait($oIE)

$oSubmit = _IEGetObjByName ($oIE, "Submit")
_IEAction ($oSubmit, "click")
_IELoadWait ($oIE)

EndFunc
 
Автор
msgim

msgim

Новичок
Сообщения
10
Репутация
0
Нет не забыл! Просто не весь текст скрипта выложил

А вот на это нужно нажать!
<input name="Submit" class="button" type="submit" value="Вход"/>

Так к слову данный кусок скрипта работал в ie 8 в 9 не хочет!
 
Автор
msgim

msgim

Новичок
Сообщения
10
Репутация
0
Нет а как его включить?
Супер спасибо большое!

Подскажите пожалуйста как еще нажать на:

<div class="votitaly-inline-rating" id="votitaly-inline-rating-211">
<div class="votitaly-get-id" style="display: none; ">211</div>
<div class="votitaly-inline-rating-stars">
<ul class="votitaly-star-rating">
<li class="current-rating" style="width: 20%; "/>
<li>
<a title="1 голос" class="votitaly-toggler one-star">1</a>
</li>
</ul>
</div>
<div class="votitaly-box">(10 голосов)</div>
</div>
 
Автор
msgim

msgim

Новичок
Сообщения
10
Репутация
0
Делаю вот так:
Код:
_IETagClassClick($oIE, 'div', 'votitaly-inline-rating-211')


EndFunc


Func _IETagClassClick($Obj, $sTagName, $sClassName)
    Local $oTags
    $oTags = _IETagNameGetCollection($Obj, $sTagName)
    For $oTag In $oTags
        If $oTag.id = $sClassName Then
             _IEAction($oTag, 'click')
            ExitLoop
        EndIf
    Next
    _IELoadWait($Obj)
EndFunc


подскажите что неправильно :(
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
964
Попробуйте так
Код:
_LinkGetClassNameClick($oIE, 'votitaly-toggler one-star')

Func _LinkGetClassNameClick($Obj, $sClassName)

    $oCollectionLink = _IELinkGetCollection($Obj)
    For $oLink In $oCollectionLink
        If $oLink.className == $sClassName Then
             _IEAction($oLink, 'click')
            ExitLoop
        EndIf
    Next
    _IELoadWait($Obj)
EndFunc
 
Автор
msgim

msgim

Новичок
Сообщения
10
Репутация
0
Такой вариант я думаю мне не поможет так как мне нужно нажимать в статье и там она не одна

votitaly-inline-rating-211
votitaly-inline-rating-118

<div class="votitaly-inline-rating" id="votitaly-inline-rating-211">
<div class="votitaly-get-id" style="display: none; ">211</div>
<div class="votitaly-inline-rating-stars">
<ul class="votitaly-star-rating">
<li class="current-rating" style="width: 20%; "/>
<li>
<a title="1 голос" class="votitaly-toggler one-star">1[/url]
</li>
</ul>
</div>
<div class="votitaly-box">(10 голосов)</div>
</div>


<div class="votitaly-inline-rating" id="votitaly-inline-rating-118">
<div class="votitaly-get-id" style="display: none; ">118</div>
<div class="votitaly-inline-rating-stars">
<ul class="votitaly-star-rating">
<li class="current-rating" style="width: 20%; "/>
<li>
<a title="1 голос" class="votitaly-toggler one-star">1[/url]
</li>
</ul>
</div>
<div class="votitaly-box">(10 голосов)</div>
</div>
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
964
msgim [?]
так как мне нужно нажимать в статье и там она не одна
Вам нужно нажать каждое голосование по одному разу или … ? Опишите суть задачи.
 
Автор
msgim

msgim

Новичок
Сообщения
10
Репутация
0
Да мне нужно проголосовать именно за 1 ID, среди нескольких!

Как я предполагаю нужно сначала найти <div class="votitaly-inline-rating" id="votitaly-inline-rating-221">, а потом кликнуть внутри на этот <div class="votitaly-inline-rating-stars">! Или если возможно сразу кликнуть на первый?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
622
msgim
{CodeWarn}
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
964
Попробуйте так
Код:
_Voting($oIE, 211)

Func _Voting($o_Obj, $s_ID)

	$o_Div = _IEGetObjById($o_Obj, String('votitaly-inline-rating-' & $s_ID))
	_IELinkClickByIndex($o_Div, 0)
EndFunc
 
Автор
msgim

msgim

Новичок
Сообщения
10
Репутация
0
Не помогло уходит на главную страницу видно не на то что то кликает!


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

Может так как то?

Код:
_Voting($oIE, 211)

Func _Voting($o_Obj, $s_ID)
  
    $o_Div = _IEGetObjById($o_Obj, String('votitaly-inline-rating-' & $s_ID))
    For $oLink In $o_Div
        If $oLink.id == $o_Div Then
             _IELinkClickByIndex($o_Div, 0)
            ExitLoop
        EndIf
    Next		
	
EndFunc
 

Garrett

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

msgim

Новичок
Сообщения
10
Репутация
0
Отправил вам лс.

мне нужно нажать желтую кнопку(мне нравиться) за определенного участника
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
964
msgim, я всё понял и всё получил.
Просто в жизни порой нужно иметь терпение! ;)

Если вам нужно срочно, то вот вам направление, в котором нужно работать.
Обратите внимание на ссылку, у неё нет атрибута href!
У вас там за клик по ссылки отвечает JScript функция, которую чтобы найти, нужно проникнутся алгоритмом работы JScript+DHTML голосования.
Далее можно внедрить свой JScript код в страницу и выполнить найденную функцию, передав ей параметры.
Для этого есть много способов, в частности можно использовать _IEHeadInsertEventScript.

OffTopic:
P.S. Жизнь устроена таким образом, что только зло может быть сотворено мгновенно, для сотворения же добра нужно время!
 
Автор
msgim

msgim

Новичок
Сообщения
10
Репутация
0
Подскажите как то вот так это должно выглядеть?

Код:
$x = 0
$iDivNumber = 0
$oDivs = _IETagNameGetCollection($oIE, "div")
For $oDiv in $oDivs
	
	If String($oDiv.id) = "votitaly-inline-rating-211" Then
        $iDivNumber = $x
        ConsoleWrite('Наш DIV №' & String($x))
		
		$script = 'function(selector,nocash){var elements=[];selector=selector.split('');for(var i=0,j=selector.length;i<j;i++)elements=elements.concat(this.getElements(selector[i],true));return(nocash)?elements:$$.unique(elements);}'
        _IEHeadInsertEventScript ($oIE, "document", "1", $script)
        ExitLoop
    EndIf
    $x+=1
Next


без вашей помощи мне не разгадать эту задачу :wacko:
 
Автор
msgim

msgim

Новичок
Сообщения
10
Репутация
0
Вот нашел ссылку на этот компонент http://depositfiles.com/ru/files/sks9i8wdj может как то здесь посмотреть какая function запускается.


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

Вот если поможет исходник JS

Код:
/*
# "VOTItaly" Plugin for Joomla! 1.5.x - Version 1.2
# License: http://www.gnu.org/copyleft/gpl.html
# Authors: Luca Scarpa & Silvio Zennaro
# Copyright (c) 2006 - 2009 Siloos snc - http://www.siloos.it
# Project page at http://www.joomitaly.com - Demos at http://demo.joomitaly.com
# ***Last update: Aug 27th, 2009***
*/
var VotitalyPlugin = new Class ({
	options: {
    submiturl: '/plugins/content/ji_votitaly_ajax.php',
		loadingimg: '/plugins/content/ji_votitaly/images/loading.gif',
		show_stars: true,
		star_description: 'undefined',
		language: {
			updating: 'undefined',
			thanks: 'undefined',
			already_vote: 'undefined',
			votes: 'undefined',
			vote: 'undefined',
			average: 'undefined',
			outof: 'undefined',
			error1: 'undefined',
			error2: 'undefined',
			error3: 'undefined',
			error4: 'undefined',
			error5: 'undefined'
			}
  },
	
  initialize: function(options){
    this.setOptions(options);

		this.elements = [];
		this.logmessages = [];
		
		this.build();
	},
	
	build: function () {
		var arrOfElements = $$('div.votitaly-inline-rating');
		
		if ($type(arrOfElements) != 'array') {
			this.log('Parametri di inizializzazione errati!');
			return false;
		}
		if (!arrOfElements.length) {
			this.log('Nessun elemento di inizializzazione configurato!');
			return false;			
		}

		// analisi degli elementi passati come parametro
		var _class = this;
		var container_fx = box_fx = [];
		arrOfElements.each(function (el) {
			var actual_el_id = el.getElement('div.votitaly-get-id').getText();
			var actual_id = el.id;

			var togglers = el.getElements('a.votitaly-toggler');

			container_fx[actual_el_id] = new Fx.Styles(actual_id, {duration:1000, wait:false});
			box_fx[actual_el_id] = new Fx.Styles($(actual_id).getElement('div.votitaly-box'), {duration:1000, wait:false});
			
			// foreach star to click
			togglers.each(function(tog) {
				
				tog.addEvent('click', function (e) {
					var container_id = actual_id;
					var element_id = actual_el_id;
					
					container_fx[element_id].start({
						'opacity': 0.3
					});
					
					// increasing performance:
					$(container_id).getElement('div.votitaly-box').setHTML('<img src="'+_class.options.loadingimg+'" class="loading" /> '+_class.options.language.updating);
					
					new Ajax(_class.options.submiturl, {
						method: 'post',
						data: 'task=vote&cid='+element_id+'&rating='+tog.getText(),
						onComplete: function(response){
							var json = Json.evaluate(response);
								var cont_el = $(container_id);
								// modifica width li.current-rating
								cont_el.getElement('li.current-rating').setStyle('width', json.width);
								
								// opacity 1 su tutto il div
								container_fx[element_id].start({
									'opacity': 1,
									'background-color': '#fff'
								});
								// effetto sul box per ringraziamenti
								box_fx[element_id].start({'opacity': 0}).chain(function() {
									cont_el.getElement('div.votitaly-box').setHTML(
										(json.success ? _class.options.language.thanks : _class._getErrorString(json.return_code))
									);
									box_fx[element_id].start({'opacity': 1}); // visibile
									
								}).chain(function () {
									var func = function() {
										box_fx[element_id].start({'opacity': 0}).chain(function() {
											_class._update_voting_description(
													cont_el.getElement('div.votitaly-box'),
													json.num_votes, // #totale voti
													json.average,		// media voti
													json.out_of			// massimo scala votazione
											);
											box_fx[element_id].start({'opacity': 1}); // visibile
										});
									}.delay((json.success ? 1000 : 4000));
								});
						}
					}).request();
				});
			});
		});
		
	},

	_update_voting_description: function (box_el, num_votes, average, out_of) {
		var string = this.options.star_description;

		string = string.replace(/{num_votes}/ig, num_votes)
							.replace(/{num_average}/ig, average)
							.replace(/{num_outof}/ig, out_of)
							.replace(/#LANG_VOTES/ig, num_votes == 1 ? this.options.language.vote : this.options.language.votes )
							.replace(/#LANG_AVERAGE/ig, this.options.language.average )
							.replace(/#LANG_OUTOF/ig, this.options.language.outof );

		box_el.setHTML(string);
		
	},

	_getErrorString: function (errno) {
		switch (errno) {
			case 1: return this.options.language.error1;
			case 2: return this.options.language.error2;
			case 3: return this.options.language.error3;
			case 4: return this.options.language.error4;
			case 5: return this.options.language.error5;
			default: return 'undefined';
		}
	},

	//-- error logs methods ---------------//
	log: function (string) {			
		this.logmessages.include(string);
	},
	showLogs: function () {
		this.logmessages.each(function (message) {
			console.log(message);
		});
	},
	hasLogs: function () {
		return this.logmessages.length > 0;
	},
	emptyLogs: function () {
		this.logmessages = [];
	}
});
VotitalyPlugin.implement(new Options);
 
Верх