Полезная информация

Общайтесь со знакомыми и друзьями в нашем сообществе в Facebook.

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 24-10-2019 01:43:50

InfSub, я на цикл не смотрел, т.к. он там вообще неуместен в таком виде. Наличие try{...} catch{...} не смутило? ;)
А так, вполне обыденная практика генерировать так динамические регулярки.

Судя по коду ему нужно при листинге страниц извлекать из pathname уникальный ник и подставлять его в регулярку,
с помощью которой он собирает в массив ссылки со страницы соответствующие нужному паттерну включающему ник.
Естественно, конечно оптимально было бы сразу собрать в коллекцию все ссылки методом querySelectorAll('a'); и согласен по поводу test()

скрытый текст

Выделить код

Код:

var arr = [];
var url = window.location.pathname.substr(1);
var nodes = window.document.querySelectorAll('a');
var re = new RegExp(url + '/status\\.\\d+', 'i');

for (i=0;i<nodes.length;i++) {
  var link = nodes[i].href;
  if (re.test(link))
    arr.push(link);
}

window.console.log(arr);

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 23-10-2019 23:15:46

Алим
Примерно так

скрытый текст

Выделить код

Код:

if(links.match(new RegExp(url + '/status.\\d+', 'i'))){
  массив.push(links)
}

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 20-10-2019 15:04:14

Заранее в текст вбейте символ переноса строки в нужные места

Есть же примеры

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


скрытый текст

Выделить код

Код:

var tx = ['Данное сообщение пишем с \nновой \n\n\nстроки'];

var txarea = window.document.querySelector('textarea[class^="message"]');
txarea.value = tx[0];

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 20-10-2019 14:41:25

saurbeck

скрытый текст

Выделить код

Код:

var text = ['Данное сообщение пишем с новой строки'];

iimPlayCode('TAG POS=1 TYPE=TEXTAREA FORM=ACTION:* ATTR=CLASS:message* CONTENT="'+ text[0].replace(/\s/g, '\r\n') +'"');

iMacros » Вытянуть данные при совпадении нескольких условий » 22-09-2019 12:06:33

И вам тоже дай бог здоровья (от агностика)! ;)
По поводу десктопа всё можно, есть множество гайдов, в том числе статей на хабре.
По запросу "desktop js" в выдаче гуугла много статей по этой тематике. Сам таким не занимался поскольку с JS мне на данный момент удобнее работать браузерно, где реализовано много технологий и API дающих дополнительный набор возможностей. Опять же иногда помогают готовые расширения для Firefox.

Но в любом случае для начала необходимо ознакомиться с основами javascript

скрытый текст
Основы:
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

И гуглить готовые примеры и рецепты на stackoverflow
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


Успехов!

iMacros » Вытянуть данные при совпадении нескольких условий » 21-09-2019 18:28:04

Для отладки запроса

скрытый текст

Выделить код

Код:

var http = new window.XMLHttpRequest();


В остальных случаях для работы запросов из макроса объявите вначале кода XMLHttpRequest
скрытый текст

Выделить код

Код:

var XMLHttpRequest = Components.Constructor("@mozilla.org/xmlextras/xmlhttprequest;1");

iMacros » Вытянуть данные при совпадении нескольких условий » 20-09-2019 18:57:56

Ваприанты:
- Токенизация
- Проверка рефёрера на сервере
- Отправка из средств разработчика не всегда корректно работает

Составляйте запрос вручную через конструктор XMLHttpRequest.

iMacros » Вытянуть данные при совпадении нескольких условий » 20-09-2019 13:36:14

В настройки инструментов разработчика зайдите и включите непрерывные логи "Enable persistent logs"


скрытый текст
https://i.imgur.com/Ap0rvSF.png

iMacros » Вытянуть данные при совпадении нескольких условий » 20-09-2019 03:40:01

Вы сами должны определить какие данные отправляются при взаимодействии со страницей и найти нужные запросы.
Потом пробуйте имитировать запрос через XMLHttpRequest с необходимыми заголовками и параметрами.
Не видя страницы перед глазами со всеми событиями и подключенными скриптами, помощь вам будет схожа с сеансом телепатии. Тут слишком много "если".

iMacros » Вытянуть данные при совпадении нескольких условий » 19-09-2019 18:20:56

Вы вначале запрос найдите, который идёт на сервер при изменении цены.
Хотя бы по фильтру XHR отсортируйте на панели.

iMacros » Вытянуть данные при совпадении нескольких условий » 18-09-2019 15:12:54

Выше ссылку давал о типе данных и преобразовании типов. Читайте до понимания.
Прежде чем осуществлять арифметические действия, убедитесь, что значения переменных приведены к правильному типу (number).

Вам уже объяснил аналогичную вашу ошибку


Как об стенку горох… :angry:

iMacros » Вытянуть данные при совпадении нескольких условий » 17-09-2019 23:50:19

Не гадайте. Потратьте 30 минут на изучение селекторов

скрытый текст

Выделить код

Код:

window.document.querySelector('.form-control.price').value="Test input";


Ссылки вам уже выше дал и примеров масса.

iMacros » Вытянуть данные при совпадении нескольких условий » 17-09-2019 03:11:09

pricetax.match is not a function потому что pricetax у вас это уже число а не строка. Метод match() работает со строками а не числами

скрытый текст

Выделить код

Код:

var pricetax = "8.496434";// Сейчас строка

window.console.log(pricetax.match(/\d+\.\d{2}/)[0]);

// Или преобразуем число в строку с помощью метода String()
var pricetax = 8.496434;// Сейчас число

window.console.log(String(pricetax).match(/\d+\.\d{2}/)[0]);


Читайте о типе данных в JS и о преобразовании типов
скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


gødmøde пишет:

проверка имени продавца, или идентификация себя по этому имени

Одним циклом всё это сортируете по условию в объект, а потом сравниваете.

iMacros » Вытянуть данные при совпадении нескольких условий » 16-09-2019 02:27:37

gødmøde пишет:

ну дело в том что  мне не просто нужно получить самую верхнюю цену, а чтобы эта цена соответствовала моим критериям
1 data-server=9792
2 data-side=52
3 data-online=1

Вы плохо ознакомились с предложенными мануалами.

Пишете селекторы атрибутов без пробелов, чтобы получить только ноды соответствующие значениям data-server="9792", data-side="52" и data-online="1"

Собираете в массив все цены из полученных нод и находите минималную цену

скрытый текст

Выделить код

Код:

var nodes = window.document.querySelectorAll('[data-server="9792"][data-side="52"][data-online="1"]');
var arr = [];
for (i=0;i<nodes.length;i++) {
  var price = nodes[i].querySelector('.text-right>div').textContent;
  // Собираем в массив "arr" значения преобразованные к числу
  arr.push(+price.match(/[0-9.]+/)[0]);
}
// Отфильтровываем из массива "arr" минимальное число
var min_price = Math.min.apply(Math, arr);

// Смотрим в консоль
window.console.log(arr);
window.console.log(min_price);

iMacros » Вытянуть данные при совпадении нескольких условий » 15-09-2019 21:23:56

Используйте циклы

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


Если у вас все ноды tr[data-href] на одной странице, то собираете их в один массивоподобный объект методом querySelectorAll
Потом перебираете в цикле со своим условием
скрытый текст

Выделить код

Код:

var nodes = window.document.querySelectorAll('tr[data-href]');
for (i=0;i<nodes.length;i++) {
  var node = nodes[i];
  var data_server = node.getAttribute('data-server');
  var data_side = node.getAttribute('data-side');
  var data_online = node.getAttribute('data-online');
  var price = node.querySelector('.text-right>div').textContent;
  if(data_server==3194&&data_side==52&&data_online==1)//проверяю чтобы все совпадало
    window.console.log(price.match(/[0-9.]+/)[0]); //вывожу цену если все ок по моим критериям
}


Примеров работы

iMacros » Вытянуть данные при совпадении нескольких условий » 15-09-2019 01:58:12

Потратьте полчаса на изучение селекторов


и сможете извлекать всё что угодно методами

querySelector и querySelectorAll

Знакомьтесь с методом getAttribute() для извлечения значений атрибутов

Вот ваши параметры по отдельности

скрытый текст

Выделить код

Код:

var node = window.document.querySelector('tr[data-href]');

var data_server = node.getAttribute('data-server');
var data_side = node.getAttribute('data-side');
var data_online = node.getAttribute('data-online');

// Значение цены
var price = node.querySelector('.text-right>div').textContent;

// Смотрим в консоль по ctrl + shift + k

window.console.log(data_server);
window.console.log(data_side);
window.console.log(data_online);
window.console.log(price);

// Значение цены без лишнего символа
window.console.log(price.match(/[0-9.]+/)[0]);


Чтобы фильтровать ненужные символы и извлекать из текста необходимое, изучайте регуля

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 15-09-2019 01:05:49

Алим
Пользуйтесь лёгкой версией яндекса

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


Код отправки
скрытый текст

Выделить код

Код:

var input_nodes = window.document.querySelectorAll('.b-form-input__input');
input_nodes[0].value = "ivan@mail.ru";
input_nodes[3].value = "Test headline";

var input_txarea = window.document.querySelector('textarea#compose-send');
input_txarea.value = "Test message";

// Отправить
window.document.querySelector('.b-compose__send').click();

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 23-07-2019 13:44:09

PRESIDENT ИМХО, это уже избыточно.

Вполне достаточно

скрытый текст

Выделить код

Код:

taskkill /im firefox.exe


и в настройках приватности about:preferences#privacy просто включить "Удалять историю при закрытии Firefox" предварительно указав что нужно чистить.
И опять же, зачем насильно, криво убивать процесс, чтобы потом принудительно чистить все "хвосты", когда без флага /F работа firefox корректно завершается, как при обычном нажатии на [x]?
В чём подвох? ;)

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 23-07-2019 09:37:01

saurbeck, касательно батника, нужно корректно отправить WM_CLOSE. Сигнализировать завершение в приложение. В батник

скрытый текст

Выделить код

Код:

taskkill /im firefox.exe


Так должно корректно закрываться.

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 23-07-2019 09:08:09

saurbeck, что мешает перезапускать другую программу батником, а браузер закрывать через таймаут одним из вышеописанных способов?

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 23-07-2019 01:15:08

saurbeck чем вариант закрытия всех вкладок, а заодно и браузера, не устраивает?

Вы понимаете, что taskkill вы в лоб завершаете процесс, а не корректно закрываете браузер? Попробуйте вручную завершить процесс "firefox.exe" в диспетчере задач, и вы получите тот же результат.

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 23-07-2019 00:15:41

Держите памятку

[spoiler=Работа с вкладками][code]var browserWin = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
                       .getInterface(Components.interfaces.nsIWebNavigation)
                       .QueryInterface(Components.interfaces.nsIDocShellTreeItem)
                       .rootTreeItem
                       .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
                       .getInterface(Components.interfaces.nsIDOMWindow);

//Закрыть активную вкладку
browserWin.getBrowser().removeCurrentTab();

//Закрыть активную вкладку
this.window.close();

//Закрыть все вкладки слева, кроме закреплённых вкладок
browserWin.gBrowser.visibleTabs.forEach((tab)=> !tab.pinned && tab._tPos < browserWin.gBrowser.mCurrentTab._tPos && browserWin.gBrowser.removeTab(tab));

//Закрыть все вкладки, кроме закреплённых вкладок
[...browserWin.gBrowser.tabs].forEach((tab)=> !tab.pinned && browserWin.gBrowser.removeTab(tab));

//Закрыть все вкладки справа

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2011 Mozilla Russia
Язык отображения форума: [Русский] [English]