Что нового

[Сеть, интернет] Как правильно обращаться с кодировкой русского текста при автоматизации FireFox

beaver

Новичок
Сообщения
58
Репутация
2
Всем доброго дня.
Сегодня решил воспользоваться стандартными функциями для автоматизации Mozilla FireFox _FFLinksGetAll и _FFClick, но на толкнулся на проблему с кодировкой.

Ситуация следующая: пытаюсь при помощи скрипта (см. ниже) щелкнуть по ссылке, зная ее текст.
Для этого придумал два варианта.

Вариант 1.
Код:
_FFLinkClick("Зарегистрироваться","text")


Вариант 2.
Код:
Local $aLinks = _FFLinksGetAll()
    For $i = 0 To ((UBound($aLinks)) - 1) step 1
		Log_Write(3, "Клик по ссылке '"& $aLinks[$i][0] &"' с текстом '" & $aLinks[$i][5] & "' для FF ", "Library: \lib\ff\kernel_ff.au3, Function: FF_LinkClick_ByText")
        If $aLinks[$i][5] == "Зарегистрироваться" Then
            _FFLinkClick($i, "index")
            _FFLoadWait()
            ExitLoop
        EndIf
    Next


Как можно догадаться ни первый, ни второй вариант не работают.
Если посмотреть, что выводится в логи (по строке Log_Write - см. аттач), то все становится понятно:

Кодировка текста страницы UTF-8
Код:
<meta http-equiv="content-type" content="text/html; charset=utf-8" />

Сама ссылка на которую требуется нажать выглядит следующим образом:
Код:
<a href="/register/" title="Зарегистрироваться" rel="step-1-1" id="registrationLink"><strong>Зарегистрироваться</strong></a>

Подскажите пожалуйста как работать с русским текстом?
 

axlwor

Скриптер
Сообщения
657
Репутация
147
Re: [Сеть, интернет] Как правильно обращаться с кодировкой русского текста при автоматизации FireFo

$aLinks[$i][4] - id
в данном случае он тебе известен как "registrationLink"
а с кодировками - может тебе помогут
Код:
StringToBinary/BinaryToString
 
Автор
B

beaver

Новичок
Сообщения
58
Репутация
2
Re: [Сеть, интернет] Как правильно обращаться с кодировкой русского текста при автоматизации FireFo

Это понятно, что я могу использовать обходные пути. Но в данном конкретном случае мне необходимо ориентироваться именно по тексту, причем по русскому. Поэтому я и создавал тему. Мне надо заточиться именно на текст ссылки.

А по поводу функций перекодировки, то указанные функции мне не подходят, поскольку текст мне передается явно не в бинарном виде. Особенно это заметно на строках на латинице (они идут без искажения). На всякий случай попробовал и их - как и ожидалось не помогло.

На сайте Лебедева кодировщик написал, что перекодировал следующим образом: 7-bit ASCII → KOI8-U + KOI8-R → ISO-8859-5
может кто знает как сделать это при помощи AutoIt?
 
Автор
B

beaver

Новичок
Сообщения
58
Репутация
2
Re: [Сеть, интернет] Как правильно обращаться с кодировкой русского текста при автоматизации FireFo

тему с указанной библиотекой я уже видел, но указанных мной перекодировок я там не нашел.
Если ошибаюсь - ткните носом плиз.

И вообще очень странно, что никто не сталкивался с аналогичной проблемой перекодировки при работе с FF. Я ни одной похожей темы не нашел на форуме :(
 
Автор
B

beaver

Новичок
Сообщения
58
Репутация
2
Re: [Сеть, интернет] Как правильно обращаться с кодировкой русского текста при автоматизации FireFo

Так за сутки у меня и не получилось побороть эту проблему.
Приходится вызывать функцию с указанием текста в некорректной кодировке. Выглядит это не комильфо, но временно решает ступор в который я попал. :blink:

Код:
Func FF_LinkClick_ByText("0@538AB@8@>20BLAO")

Func FF_LinkClick_ByText($sText)	
	Local $aLinks = _FFLinksGetAll()
    For $i = 0 To ((UBound($aLinks)) - 1) step 1		
        If $aLinks[$i][5] == $sText Then
			Log_Write(4, "Выполнен клик по ссылке с текстом '" & $sText & "' для FF ", "Library: \lib\ff\kernel_ff.au3, Function: FF_LinkClick_ByText")
            _FFLinkClick($i, "index")
            _FFLoadWait()
            Return 1
        EndIf
    Next
	Log_Write(0, "Не найдена ссылка с текстом '" & $sText & "' для FF ", "Library: \lib\ff\kernel_ff.au3, Function: FF_LinkClick_ByText")
	Return 0
EndFunc


Если вдруг кто поможет с решением проблемы перекодировки - буду крайне признателен.
 

axlwor

Скриптер
Сообщения
657
Репутация
147
Re: [Сеть, интернет] Как правильно обращаться с кодировкой русского текста при автоматизации FireFo

:laugh:бдыыыжь :rofl:
чем тебе id то не понравилось? смысл жать кнопку с крякозябликами?
 
Автор
B

beaver

Новичок
Сообщения
58
Репутация
2
Re: [Сеть, интернет] Как правильно обращаться с кодировкой русского текста при автоматизации FireFo

Дело все в том, что это я только один пример показал, где есть и текст ссылки и id. В дальнейшем функцию планирую использовать и для ссылок в которых только href + text. Т.е. гарантированно везде только по тексту ссылки можно ориентироваться.
Вообще меня эта проблема с кодировкой текста сильно бесит, поскольку и при получении html страницы весь русский текст тоже криво выглядит :mad: Из-за чего такая ж@па с кодировкой вообще не понятно - страница идеально в utf-8 написана и никаких проблем по идее быть не должно.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Re: [Сеть, интернет] Как правильно обращаться с кодировкой русского текста при автоматизации FireFo

beaver
Ссылку можно на страницу где нужно кликать?
 
Автор
B

beaver

Новичок
Сообщения
58
Репутация
2
Re: [Сеть, интернет] Как правильно обращаться с кодировкой русского текста при автоматизации FireFo

Отправил в личные сообщения
 

axlwor

Скриптер
Сообщения
657
Репутация
147
Re: [Сеть, интернет] Как правильно обращаться с кодировкой русского текста при автоматизации FireFo

В общем то выход есть всегда ;D
Но русские кодировки на ссылке меня уже тоже интересуют - буду пытаться боты переводить с ИЕ на FF
посмотреть то любую ссылку можно так
Код:
#include "Encoding.au3"

#Include "FF.au3"
#Include <Array.au3>

_FFStart("http://autoit-script.ru/index.php/topic,2714.0.html")

If _FFIsConnected() Then
	Global $aLinks
	$aLinks = _FFLinksGetAll()
	_ArrayDisplay($aLinks)
EndIf

колонка 5
 
Автор
B

beaver

Новичок
Сообщения
58
Репутация
2
Re: [Сеть, интернет] Как правильно обращаться с кодировкой русского текста при автоматизации FireFo

А я вот сейчас тем же занимаюсь - пишу прослойку чтобы стандартные команды не зависели от браузера. Т.е. у меня есть абстрактная функция ClickByText($sText), которая в зависимости от глобальной переменной указывающей на тип браузера далее дергает уже конкретные функции библиотек IE, FF или Opera. До момента с русским текстом более-менее получалось...
 

axlwor

Скриптер
Сообщения
657
Репутация
147
Re: [Сеть, интернет] Как правильно обращаться с кодировкой русского текста при автоматизации FireFo

В опере тоже получалось?
Покажи
 
Автор
B

beaver

Новичок
Сообщения
58
Репутация
2
Re: [Сеть, интернет] Как правильно обращаться с кодировкой русского текста при автоматизации FireFo

До оперы еще не добрался, но библиотеку уже нашел для AutoIt
http://autoit-script.ru/index.php/topic,379.0.html
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Re: [Сеть, интернет] Как правильно обращаться с кодировкой русского текста при автоматизации FireFo

beaver
У меня вот что выдаёт скрипт:

Код:
__FFSend ==> Socket Error
_FFCmd ==> Error return value
_FFLinksGetAll ==> No match
_FFLinksGetAll ==> General Error
 
Автор
B

beaver

Новичок
Сообщения
58
Репутация
2
Re: [Сеть, интернет] Как правильно обращаться с кодировкой русского текста при автоматизации FireFo

Какой скрипт? Мой?
 

axlwor

Скриптер
Сообщения
657
Репутация
147
Re: [Сеть, интернет] Как правильно обращаться с кодировкой русского текста при автоматизации FireFo

beaver сказал(а):
До оперы еще не добрался, но библиотеку уже нашел для AutoIt
http://autoit-script.ru/index.php/topic,379.0.html
поэтому и сказал покажи :D
Теперь прочти что показал :whistle:
 
Автор
B

beaver

Новичок
Сообщения
58
Репутация
2
Re: [Сеть, интернет] Как правильно обращаться с кодировкой русского текста при автоматизации FireFo

мда уж... радость была преждевременной :(
 

axlwor

Скриптер
Сообщения
657
Репутация
147
Re: [Сеть, интернет] Как правильно обращаться с кодировкой русского текста при автоматизации FireFo

beaver сказал(а):
мда уж... радость была преждевременной :(
Поэтому боты у меня работают в ИЕ. А я работаю в FF и очень редко в опере
 
Автор
B

beaver

Новичок
Сообщения
58
Репутация
2
Re: [Сеть, интернет] Как правильно обращаться с кодировкой русского текста при автоматизации FireFo

Переходи на FF ;) я вот сейчас пытаюсь фрейм свой любимый на FF осилить... Ну и жду решения вопроса с кодировкой от нетривиальных AutoIt-умов с форума :D раз своей головы не хватает осилить...
 
Верх