- Регистрация
- 21.04.2010
- Сообщения
- 57
- Благодарностей
- 15
- Баллы
- 8
Пытаюсь накрутку поведенческих сделать, но случился такой затык:
Открываю я выдачу гугла по нужной фразе
Получаю коллекцию элементов и перебираю её
это только для одной страницы, дальше будет обработка если мой сайт не найден на странице и т.д.
Но уже сейчас проблема, после первого клика и возврата на поиск history.go(-1) куда-то девается коллекция элементов не могу понять и при попытке получить следующий htmlelement из коллекции
HtmlElement currentlink = linksCollections.Elements.FindChildByAttribute("a","fulltagname","a","regexp",0);
возвращается пустота и соответственно события currentlink.RiseEvent("click","Full"); не срабатывают и ссылки пустые currentlink.GetAttribute("href").
а если не кликать и просто вывести return коллекцию элементов currentlink.GetAttribute("href") то она вся выводиться.
Открываю я выдачу гугла по нужной фразе
Получаю коллекцию элементов и перебираю её
Код:
HtmlElement SERPCollections = instance.ActiveTab.FindElementByAttribute("ol","id","rso","text",0);
HtmlElementCollection linksCollections = SERPCollections.FindChildrenByAttribute("h3","fulltagname","h3","regexp");
// задали 3 случайных сайта для клика, по номеру
Random rnd = new Random();
int rnd1 = rnd.Next(0, 3);
int rnd2 = rnd.Next(4, 6);
int rnd3 = rnd.Next(7, 9);
for (int i = 0; i < linksCollections.Count; i++)
{
HtmlElement currentlink = linksCollections.Elements[i].FindChildByAttribute("a","fulltagname","a","regexp",0);
//для проверки записываю результаты в переменную
result = result + Convert.ToString(i) + currentlink.GetAttribute("href") + Environment.NewLine;
// если встретился мой сайт то заходим на него и проводим много времени, тыкаем в разные места, а также заказываем что нибудь
if (currentlink.GetAttribute("href").Contains("наш сайт"))
{
//тут разные действия
break; // наш сайт последний на который мы зашли, значит дальше кликать по случайным сайтам не надо
}
// если это не наш сайт, но значение i совпадает с тем куда надо рандомно кликнуть то кликаем и через 3 секунды закрываем сайт
if (i ==rnd1 | i == rnd2 | i == rnd3)
//if (false)
{
// кликаем на сайт конкурента в поиске
currentlink.RiseEvent("click","Full");
Tab tab = instance.ActiveTab;
if (tab.IsBusy) {tab.WaitDownloading();}
// делаем вид что просматриваем страницу 2 секунды
System.Threading.Thread.Sleep(2000);
// пролистываем вниз, ну типа глазами пробежались
Emulator.SendKey(tab.Handle,System.Windows.Forms.Keys.PageDown, KeyboardEvent.Down);
System.Threading.Thread.Sleep(1000);
Emulator.SendKey(tab.Handle,System.Windows.Forms.Keys.PageDown, KeyboardEvent.Down);
//возвращаемся к поиску
if (!tab.URL.Contains("google.com")) {tab.MainDocument.EvaluateScript("history.go(-1)");}
if (tab.IsBusy) {tab.WaitDownloading();}
System.Threading.Thread.Sleep(1000);
}
}
return result;
Но уже сейчас проблема, после первого клика и возврата на поиск history.go(-1) куда-то девается коллекция элементов не могу понять и при попытке получить следующий htmlelement из коллекции
HtmlElement currentlink = linksCollections.Elements.FindChildByAttribute("a","fulltagname","a","regexp",0);
возвращается пустота и соответственно события currentlink.RiseEvent("click","Full"); не срабатывают и ссылки пустые currentlink.GetAttribute("href").
а если не кликать и просто вывести return коллекцию элементов currentlink.GetAttribute("href") то она вся выводиться.
Последнее редактирование: