Помогите разобраться с случайными переходами по сайту

swiniks

Client
Регистрация
19.02.2015
Сообщения
244
Благодарностей
171
Баллы
43
Замучился с случайным переходом по сайту нужна помощь !
Задача сделать 3 разных случайных перехода по сайту, сайты всегда почти разные.
На разность переходов сделал проверку по URL что бы не было одинаковых переходов, но вот переходы по сайту стабильно не работают, то в картинку попадают или раскрытие меню, то в рекламу тогда вообще открывается новая вкладка но вкладку поборол закрытием вкладки и возвратом на переход опять, хотя вроде сделал переход по {-Page.FullDomain-} имени по чему так и не пойму пока. Вот мой блок клик.



В общем надо 3 перехода разных внутри сайта, желательно с первого раза, сайты все разные.
Или как вариант, как можно узнать адреса всех страниц сайта допустим ?
 
Последнее редактирование:

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
786
Баллы
113
1. не все внутренние ссылки ведут к внутренним страницам - ведь могут быть редиректы.
2. попробуйте для начала правильно определить поиск по ссылкам ( ^http(s?)://[^/\?]*?{-Page.FullDomain-} )
3. не все ссылки нужно кликать. Определитесь с областью сайта где ссылки наиболее предпочитаемые (меню, статьи, категории)
и берите только от туда.
 

swiniks

Client
Регистрация
19.02.2015
Сообщения
244
Благодарностей
171
Баллы
43
Что то регулярка не работает ( ^http(s?)://[^/\?]*?{-Page.FullDomain-} ) почему то, глянул пару сайтов там бывают нужные ссылки без домена начинаются так /ru/suport.html. Мне бы подошло что бы, просто по меню прошёлся, меню чаще присутствует на сайтах чем категории и статьи.
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
786
Баллы
113
у меня так работает
(https?://)?(www.)?{-Page.FullDomain-}[/\?]+.{1,}
я чтото не помню чтоб в дом представлении были относительные пути. Я думаю они там автоматом преобразуются в абсолютные.
попробуй взять взять innerhtml менюшки, выпарси от туда все ссылки в список регуляркой типа
(?<=<a[^>]*?href=")(https?://)?(www.)?{-Page.FullDomain-}[/\?]+[^"]+
а потом рандомно бери из списка и кликай екшеном подставляя случайную ссылку.
 

swiniks

Client
Регистрация
19.02.2015
Сообщения
244
Благодарностей
171
Баллы
43
Что то регулярки не помогают не при парсинге дом, не при парсинге innerhtml, если можешь в скриншотах покажи. Мой вариант хоть работает на сайтах где большой сайт докликывается с какого то раза.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
upload_2015-4-13_9-38-32.png
 
  • Спасибо
Реакции: swiniks

swiniks

Client
Регистрация
19.02.2015
Сообщения
244
Благодарностей
171
Баллы
43
Ну вроде получше кликает, вот ещё беда, попадается одно страничные сайты и тогда зависаю на таком сайте, а как узнать если страницы у сайта пока даже не представляю с какой стороны подойти и обойти.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
если ссылок нет, экшен завершится с ошибкой.
в чем проблема?
 

swiniks

Client
Регистрация
19.02.2015
Сообщения
244
Благодарностей
171
Баллы
43
Ссылки, может и есть но просто крутят страницу вниз или ведут на внешние сайты, если крутят вниз то URL не меняется, а у меня проверка по URL если не сменился клацает опять, если на внешнюю попал, это соц. сети в основном внешние, то открывается вкладка, а у меня опять защита если открылась вкладка то закрыть и клацнуть опять. Вот так я и зависаю -)) Ни разу по ошибке ещё не закончил переходы. Похоже мне надо в ветку по сверке списков теперь идти и делать сверку в процессе парсинга рекламных ссылок и создать бан лист рекламы одночастичной наверно что то типа такого. Если есть идеи другие подскажите плиз.
 

swiniks

Client
Регистрация
19.02.2015
Сообщения
244
Благодарностей
171
Баллы
43
По первому вопросу нашёл вариант тут
Некий элемент прячется очень глубоко, и выцепить его по id или любому одному атрибуту не представляется возможным. Парсить же html регулярками - ересь(подробнее расскажет гугл). Тут нам на помощь приходит XPath:
Код:
var Link = instance.ActiveTab.FindElementByXPath("//div[@class='menu']/ul/li[2]/a", 0);
Данный пример получает div c классом "menu", внутри него ищет список, берет 2 элемент, и ищет в нем ссылку.
По этой ссылке можно кликнуть: Link.Click();
Получить ее текст: Link.InnerHtml;
Изменить ее: Link.SetAttribute("href", "http://google.com");
Небольшое вступление в XPath можно прочитать тут: http://habrahabr.ru/post/114772/
 

evgen1995

Новичок
Регистрация
25.11.2015
Сообщения
1
Благодарностей
1
Баллы
3
я зделал так взял регулярку (?<=<a[^>]*?href=")(https?://)?(www.)?{-Page.FullDomain-}[/\?]+[^"]+ спарсил ей ссылки удалил дубли в списке и получаю строку кидаю её в переменную и ставлю значение в клик переменной ссылки которую взял а номер совпадения поставил 0 и работает нормально
 
  • Спасибо
Реакции: swiniks

Redsmokky

Client
Регистрация
06.10.2015
Сообщения
311
Благодарностей
195
Баллы
43
я зделал так взял регулярку (?<=<a[^>]*?href=")(https?://)?(www.)?{-Page.FullDomain-}[/\?]+[^"]+ спарсил ей ссылки удалил дубли в списке и получаю строку кидаю её в переменную и ставлю значение в клик переменной ссылки которую взял а номер совпадения поставил 0 и работает нормально
Привет, попробовал регулярку, не работает почему то, можешь подсказать в чем моя ошибка?
 

Вложения

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