как можно кликнуть рандомно на картинку, если страницы всегда разные?

Lextor

Client
Регистрация
19.06.2020
Сообщения
172
Благодарностей
19
Баллы
18
как можно кликнуть рандомно на картинку, если страницы всегда разные? не важно какая картинка просто кликнуть на любую. нужно для сбора куки
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 526
Благодарностей
1 323
Баллы
113
как можно кликнуть рандомно на картинку, если страницы всегда разные? не важно какая картинка просто кликнуть на любую. нужно для сбора куки
После захода на разную страницу, методом xPAtH , спарсить все картинки с urL и используя рандомную спаршенную ссылку, делаем клик с помощью дороги xpath ,по этой же ссылке. Если не поняли как, дайте пример сайта и я покажу вам как делать.
 

Lextor

Client
Регистрация
19.06.2020
Сообщения
172
Благодарностей
19
Баллы
18
После захода на разную страницу, методом xPAtH , спарсить все картинки с urL и используя рандомную спаршенную ссылку, делаем клик с помощью дороги xpath ,по этой же ссылке. Если не поняли как, дайте пример сайта и я покажу вам как делать.

не совсем понятно, с xPAtH еще не работал.
пример сайтов:
amazon .com
market.yandex .ru
eldorado .ru
e-katalog .ru

пожалуйста учтите что мне не картинки нужно с парсит и не URL от картинок. а кликнуть или кликать по картинкам, тоесть переходный URL на который видет сама картинка.
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 526
Благодарностей
1 323
Баллы
113
не совсем понятно, с xPAtH еще не работал.
пример сайтов:
amazon .com
market.yandex .ru
eldorado .ru
e-katalog .ru

пожалуйста учтите что мне не картинки нужно с парсит и не URL от картинок. а кликнуть или кликать по картинкам, тоесть переходный URL на который видет сама картинка.
Если вы не работали с Xpath, то пожалуй вам стоит начать с данного вопроса, а там уже сами найдете ответ.
 

Lextor

Client
Регистрация
19.06.2020
Сообщения
172
Благодарностей
19
Баллы
18
После захода на разную страницу, методом xPAtH , спарсить все картинки с urL и используя рандомную спаршенную ссылку, делаем клик с помощью дороги xpath ,по этой же ссылке. Если не поняли как, дайте пример сайта и я покажу вам как делать.
я посмотрел вашу ссылку, почитал теперь понимаю что это такое, благодарю. вернусь к вашему предложению "Если не поняли как, дайте пример сайта и я покажу вам как делать." и попрошу, можно на примеры amazon .com
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 482
Баллы
113
C#:
(//img)[1]
//img - этот код покажет ВСЕ картинки
(...)[1] - этот код выберет первую картинку, цивры можно менять в зависимости сколько нашлось элементов

но если не важно какую картинку кликать, то код выше самое оно
 
  • Спасибо
Реакции: Lextor

Lextor

Client
Регистрация
19.06.2020
Сообщения
172
Благодарностей
19
Баллы
18
C#:
(//img)[1]
//img - этот код покажет ВСЕ картинки
(...)[1] - этот код выберет первую картинку, цивры можно менять в зависимости сколько нашлось элементов

но если не важно какую картинку кликать, то код выше самое оно
1. скачал xPath Helper Wizard
2. проверил (//img)[1] да картинку находит.
3. как кликнуть на выбранную картинку?
 

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113
  • Спасибо
Реакции: Lextor

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 482
Баллы
113
  • Спасибо
Реакции: Lextor

Lextor

Client
Регистрация
19.06.2020
Сообщения
172
Благодарностей
19
Баллы
18
C#:
(//img)[1]
//img - этот код покажет ВСЕ картинки
(...)[1] - этот код выберет первую картинку, цивры можно менять в зависимости сколько нашлось элементов

но если не важно какую картинку кликать, то код выше самое оно
а как спарсить заголовок через xPath в переменную если страницы всегда разные?
 
Последнее редактирование:

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 482
Баллы
113
  • Спасибо
Реакции: Lextor

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113
Есть много расширений. все они работают по разному
1600724163210.png1600724271880.png
 
  • Спасибо
Реакции: Lextor

Lextor

Client
Регистрация
19.06.2020
Сообщения
172
Благодарностей
19
Баллы
18

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 482
Баллы
113
есть ли общий код и для заголовка?
нет.

именно для титла может быть один - //title потому что титл на странице всего один
а заголовки бываю разные и коды разные
 
  • Спасибо
Реакции: Lextor

Lextor

Client
Регистрация
19.06.2020
Сообщения
172
Благодарностей
19
Баллы
18
нет.

именно для титла может быть один - //title потому что титл на странице всего один
а заголовки бываю разные и коды разные

не получается взять [Title] и положить в переменную. что делаю не так?


var xpath = "//title";

HtmlElement he = instance.ActiveTab.FindElementByXPath(xpath, 0);
if (he.IsVoid) throw new Exception("не найдено и т.д."); // проверка элемента
he.innertext();

instance.ActiveTab.FindElementByXPath(xpath, 0).innertext();
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 482
Баллы
113
все работает

64293
 

Вложения

Lextor

Client
Регистрация
19.06.2020
Сообщения
172
Благодарностей
19
Баллы
18

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113
у меня только "классический поиск элемента" xPath нету. у меня Zennoposter версия v5.38.0.0
Используй код
C#:
Random rnd = new Random();

var elems = instance.ActiveTab.FindElementsByXPath("");

if(elems.Elements.Length == 0){
        project.SendInfoToLog("","Н е т  с с ы л о к  п о  к о т о р ы м  к л и к а т ь ");
        return "Н е т  с с ы л о к  п о  к о т о р ы м  к л и к а т ь ";  
    };


var num = rnd.Next(0,elems.Elements.Length);
var elem = elems.Elements[num];
System.Threading.Thread.Sleep(Global.Classes.rnd.Next(2,60)*100);
instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(elem);  
System.Threading.Thread.Sleep(Global.Classes.rnd.Next(2,6)*100);
instance.ActiveTab.FullEmulationMouseClick("left", "click");
System.Threading.Thread.Sleep(Global.Classes.rnd.Next(2,60)*100);
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 482
Баллы
113
  • Спасибо
Реакции: Lextor

Lextor

Client
Регистрация
19.06.2020
Сообщения
172
Благодарностей
19
Баллы
18
так сделай
сними галку
C#:
return instance.ActiveTab.FindElementByXPath("//title", 0).InnerText;
Посмотреть вложение 64313
благодарю. работает :-)

есть еще одна проблема, при заходе на разные страницы в первый раз всплывает "popup cookie-notification"

но при этом cookie-сообщение и Button-кнопка часто разные. допустим вот пару примеров:
1. all cookies accept
2. I Agree
3. I Accept
4. yes I know
5. I accept all cookies
6. OK
...и так далее

нужно согласиться с куклами. вопрос как реализовать (с xPath или без xPath) если страницы и cookie-сообщение всегда разные ?
 
Последнее редактирование:

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 482
Баллы
113
тут уже сложнее, надо выписывать все возможные комбинации слов, смотреть схожесть классов, думаю бОльшую часть можно найти по одинаковым признакам
универсального решения нет
 

Lextor

Client
Регистрация
19.06.2020
Сообщения
172
Благодарностей
19
Баллы
18
тут уже сложнее, надо выписывать все возможные комбинации слов, смотреть схожесть классов, думаю бОльшую часть можно найти по одинаковым признакам
универсального решения нет
я так и думал, но решил лучше переспросить.

если я угадаю 40-60% мне уже хватит. как можно реализовать?
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 482
Баллы
113
взять 50-100 сайтов перейти по ним, найти закономерность, например всплывающая плашка будет иметь class="coockie"
или что-то примерное, и на основе этого писать шаб
 

Lextor

Client
Регистрация
19.06.2020
Сообщения
172
Благодарностей
19
Баллы
18
C#:
(//img)[1]
//img - этот код покажет ВСЕ картинки
(...)[1] - этот код выберет первую картинку, цивры можно менять в зависимости сколько нашлось элементов

но если не важно какую картинку кликать, то код выше самое оно

в ProjektMaker работает а в Zennoposter не работает. я прикрепил шаблон. Как исправить ошибку? И еще. Мне пришлось добавить входные настройки, если их убрать то даже и в ProjektMaker не работает при первом запуске..
 

Вложения

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 482
Баллы
113
ты хоть посмотри как переменные вставляются в шарп, там по другому немного
замени код в шарпе на этот

C#:
var num = project.Variables["Random_choose_Picture"].Value;
var xpath = "(//img)["+num+"]";

HtmlElement he = instance.ActiveTab.FindElementByXPath(xpath, 0);
if (he.IsVoid) throw new Exception("не найдено и т.д."); // проверка элемента
he.Click();

instance.ActiveTab.FindElementByXPath(xpath, 0).Click();
 
  • Спасибо
Реакции: Lextor

Lextor

Client
Регистрация
19.06.2020
Сообщения
172
Благодарностей
19
Баллы
18
ты хоть посмотри как переменные вставляются в шарп, там по другому немного
замени код в шарпе на этот

C#:
var num = project.Variables["Random_choose_Picture"].Value;
var xpath = "(//img)["+num+"]";

HtmlElement he = instance.ActiveTab.FindElementByXPath(xpath, 0);
if (he.IsVoid) throw new Exception("не найдено и т.д."); // проверка элемента
he.Click();

instance.ActiveTab.FindElementByXPath(xpath, 0).Click();

благодарю это уже лучше :-)


а здесь что не так? код рабочий но опять только в ProjektMaker а в Zennoposter неработает:

return instance.ActiveTab.FindElementByXPath("//a[contains(@class, 'a2g0 tile-hover-target')]", {-Variable.Random_choose_Picture-}).InnerText;



нужно выбрать название продукта рандомно и вставить в переменную.
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 482
Баллы
113
слушай, я не собираюсь за тебя писать шаблон, иногда помогает сравнивать рабочий код с нерабочим и делать выводы
 

Кто просматривает тему: (Всего: 6, Пользователи: 0, Гости: 6)