Страницы: 1
Ramzes28, спасибо что читаете мой блог!
Вы все делаете почти правильно, но метод delete работает иначе и применяется для других целей.
Я добавил функцию сохранения и немного изменил ваш код, проблем с удалением строки нету, все очень просто.
Удаление из файла первой строки и дальнейшее сохранение на iMacros+JS:
[spoiler][code]/* HELPERS */
var loadFile = function (fileName) {
var fileDescriptor = imns.FIO.openNode(fileName);
var text = imns.FIO.readTextFile(fileDescriptor);
return {
text: text,
strings: text.split('\r\n') // стандартные символы перевода каретки и новой строки в текстовых файлах
};
}
var saveToFile = function (fileName, text) {
var fileDescriptor = imns.FIO.openNode(fileName);
imns.FIO.writeTextFile(fileDescriptor, text);
}
/* APPLICATION */
var strings = loadFile("C:\\Users\\ReD\\Desktop\\login.txt").strings;
var Login = (strings[0]);
// Делаем что угодно с первой строкой
window.console.log(Login);
Romstar08, можно.
Мой вариант сработает, если ты не используешь кастомные аргументы при запуске Firefox, например указание папки профиля.
Если сначала откроешь браузер, тыкнув на C:\Program Files (x86)\Mozilla Firefox\firefox.exe
А потом через любое время запустишь bat-файл, приведенный ниже, то откроется новая вкладка и в ней выполнится макрос.
Содержимое bat-файла для запуска скрипта в уже открытом браузере:
TetraSky, действительно, работает только в не очень старой версии. Тестил на фф 35, селекторы правильно указаны, но стили не меняются, даже через фаербаг. Нужно ковырять.
update: Hamzat, отличное решение, в фф 35 работает!
TetraSky, я покопался немного под капотом, нашел решение, причем оно позволяет кастомизировать хоть весь сайдбар.
Будет время, напишу об этом статью:)
Я увеличил высоту окна сообщений и перекрасил фон и цвет шрифта, а вообще вы можете использовать любые CSS-стили.
Решение для кастомизации окошка сообщений в iMacros:
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] .getService(Components.interfaces.nsIWindowMediator); var mainWindow = wm.getMostRecentWindow("navigator:browser"); mainWindow.document.querySelector('#imacros-message-box').setAttribute("style", "height: 500px; background:black; color:green; font-size: 14px;"); iimDisplay("test message");
GalinaGalina покажите ваши скрипты в личку. Возможно, они капризничают.
udalov, странный баг, но если второй вариант работает корректно, то попробуй убрать двойные кавычки.
Скорей всего, для данной команды они не нужны и iMacros считает, что ты пытаешься присвоить некорректное имя файла и автоматически преобразовывает кавычки в пробелы.
Вот так:
iimPlayCode('ONDOWNLOAD FOLDER=C:\\papka\\ FILE='+w+'.jpeg\n TAG POS=1 TYPE=IMG ATTR=SRC:https:*&&CLASS:market_item_photo&&ID:market_item_photo CONTENT=EVENT:SAVEPICTUREAS');
segunover, во-первых, приучайся к правильному форматированию кода, многие ошибки сразу станут очевидны.
У тебя используется цикл for, который вообще ничего не делает. Я догадываюсь какого эффекта ты хотел добиться, но учти одну вещь:
команда break выходит только из цикла for или while, и весь код после отработки цикла будет выполняться.
Сейчас этот код и этот цикл выглядит бессмысленно.
Для того, чтобы в любом месте остановить выполнение кода, нужно оборачивать код в функцию и использовать в необходимом месте return;
[spoiler][code]var k = iimPlayCode("SET !TIMEOUT_STEP 1 \n TAG POS=1 TYPE=H2 ATTR=TXT:Это<SP>закрытый<SP>аккаунт");
if (k < 0) {
for (var z = 1;; z++;) {
if (z > 9) break;
}
iimPlayCode(`
SET !TIMEOUT_STEP 1
TAG POS=1 TYPE=DIV ATTR=CLASS:_ovg3g&&TXT:
WAIT SECONDS=1
TAG POS=1 TYPE=SPAN ATTR=TXT:Нравится
WAIT SECONDS=1
`);
// Альтернативный цикл
var z = 0;
while (z
storming, с табом не все так тривиально, как с другими клавишами.
Вы уверены, что действие, которое вы хотите сделать нельзя реализовать другим способом, кроме как имитации нажатия на tab?
Напишите, в двух словах, какая у вас задача, желательно со ссылкой.
ts1000w, при помощи iMacros можно создавать новые профили Firefox.
Самый простой способ - это копирование текущего профиля в новую папку и после этого можно будет запустить FF с необходимыми параметрами для загрузки профиля.
Копирование папки можно реализовать через запуск внешней программы, а точнее командной строки с командой на копирование одной папки в другую + переименование.
Либо можно заморочиться с XUL и XPCOM - это более продвинутый уровень и требуется знание JS.
На сайте нет кнопки для отправки капчи, приходиться отправлять самому запросом.
Поле для ввода капчи есть же?
Сделай там иммитацию нажатия клавиши Enter.
EverythingForYou, сомневаюсь, что у тебя получится отправка капчи через XMLHttpRequest. Во-первых, я думаю там нужно прописывать гораздо больше информации в headers. Твой запрос легко спалить, что он левый.
Если честно, не совсем ясно, для чего тебе нужна подобная отправка капчи, если ты используешь браузер и можешь сделать все по классике.
Ну а так, тебе нужно просниффить весь запрос и полностью скопировать все его параметры, хидеры, разобраться с токенами и ключами.
segunover в js есть функция scrollBy()
Ссылка на примеры использования scrollBy():
petral2002,можно.
Только вместо "getelement" используй лучше "querySelector" - он более мощный и в нем можно указывать любые css-селекторы.
Примеры имитации клика мыши на Javascript:
// Кликнет по кнопке субмита window.document.querySelector("input[type=submit]").click(); // Кликнет по элементу с id="sbm" window.document.querySelector("#sbm").click(); // Кликнет по первому элементу с классом class="btn" window.document.querySelector(".btn").click(); // Кликнет по второму элементу с классом class="btn" window.document.querySelectorAll(".btn")[1].click();
EverythingForYou, аа, ясно.
Используйте так XMLHttpRequest:
Нужно больше деталей. На какой сайт вы отправляете POST-запрос?
Скорей всего вы отправляете кросс-доменный запрос на сервер, где CORS запрещены.
gost111, через FireBug посмотри, там 4 вложенных iframe, тебе сначала необходимо найти нужный, а потом в нем нажать на кнопку.
И, я почти уверен, что у тебя селектор картинки неверный. Во-первых, она точно там не под номером один идет(а у тебя "TAG POS=1"), и во-вторых там указан относительный путь(вот такой - "/img/knopkadoge.jpg").
Даниил955447112, в моем скрипте нету ошибки:)
Вы просто пароль не туда вставили. В том месте, где вы поменяли - его не нужно было трогать. Там так переменная просто называется.
Логин и пароль нужно было указать, только в этой части кода и больше ничего не менять:
wonder.uix, да пожалуйста!
Кстати, твой костыльный вариант с использованием горячих клавиш тоже имеет место быть. Только реализуется он немного иначе.
Смена цепочки Tor при помощи имитации горячих клавиш Ctrl+Shift+L:
iimPlayCode('URL GOTO=http://nagibaka.ru'); iimPlayCode('EVENT TYPE=KEYPRESS SELECTOR=* CHAR="L" MODIFIERS="ctrl,shift"');
Даниил955447112, написал вам решение на JS+iMacros.
У Qiwi любопытная защита от ботов, даже в консоли пишут "Остерегайтесь мошенников".
Подмена value для инпутов не сработала + фачит встроенный валидатор ввода, поэтому скрипт получился чуть больше.
Ожидание формы реализовал не на "TAG WAITING...", а на таймаутах, это более надежное решение.
Тестил на FF35 - все ок, иногда вылезает рекапча.
Скрипт для входа в Qiwi-кошелек на iMacros+JS:
[spoiler][code]
var APP = {
/**
* Qiwi wallet authorization
*
*/
loginQiwi: function (login, password) {
iimPlayCode('URL GOTO=https://qiwi.com');
iimPlayCode('WAIT SECONDS=2');
window.document.querySelector('[data-action=login]').click();
// Wait for submit form
(function checkForm () {
var phone = window.document.querySelector('input[name=login]');
var pass = window.document.querySelector('input[name=password]');
if (ph
…Эвентовые события, да и любые другие подобные функции работают только в контексте текущего окна.
Вот держи крутое, безкостыльное решение для смены личности в Tor:
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] .getService(Components.interfaces.nsIWindowMediator) .getMostRecentWindow("navigator:browser"); // Пример использования iimPlayCode('URL GOTO=https://whoer.net'); iimPlayCode('WAIT SECONDS=5'); wm.torbutton_new_circuit(); // Меняем цепочку соединения iimPlayCode('URL GOTO=https://whoer.net');
Пример выше немного некорректен.
Для твоего случая конструкция будет такой.
function getRandom (min, max) { return parseFloat((Math.random() * (max - min) + min).toFixed(3)) } // Использование getRandom(1.999,1.333); // вернет произвольное число в указанном диапазоне
С переключением вкладок в iMacros есть различные косяки, вот вам заготовка для четкой работы со вкладками.
Вы сами можете добавить необходимые вам функции.
Больше подробностей про баги команды "TAB T=1" можете почитать здесь -
Файл test.js
var Tabs = { _browser: function () { var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] .getService(Components.interfaces.nsIWindowMediator); return wm.getMostRecentWindow("navigator:browser").gBrowser; }(), go: function (tabIndex) { this._browser.selectedTab = this._browser.tabContainer.childNodes[tabIndex - 1]; } };
[spoiler][code]
Tabs.go(1); // переход на первую вкладку
iimPlayCode("WAIT SECONDS=3");
Tabs.go(2);
iimPlayCode(
Попробуй заменить content на window.
Остальных скриптов не вижу. Но, первое, что приходит в голову - это как раз на днях поменялся дизайн вк для всех пользователей и соответственно селекторы.
Страницы: 1