Коллекция html ??

artsmm

Client
Регистрация
03.10.2018
Сообщения
1 136
Благодарностей
196
Баллы
63
Доброй ночи, форумчане)
Подскажите пожалуйста где я накосячил с кодом?
C#:
if(adv_spec_clk){
        //Ищем коллекцию элементов в спец выдаче
        var spec_rivals = tab.FindElementsByXPath("//a[@class='/html[starts-with(@class,'i-ua_js_yes')]/body[starts-with(@class,'b-page')]/div[starts-with(@class,'main')]/div[@class='main__center']/div[@class='main__content']/div[starts-with(@class,'content')]/div[@class='content__left']/ul[starts-with(@class,'serp-list')]/li[@class='serp-item']/div[starts-with(@class,'organic')]/div[starts-with(@class,'organic__subtitle')]/div[starts-with(@class,'path')]/a[starts-with(@class,'link')]/b']");
        if(spec_rivals.Count==0) throw new Exception("Не найдены посты в рекламной спец.выдаче..");
        var spec_rival = spec_rivals.GetByNumber(rnd.Next(0,spec_rivals.Count));
        string spec_rival_dom_name = spec_rival.GetAttribute("innertext");
        
        List<HtmlElement> list = new List<HtmlElement>();
        list.Add(spec_rival);
            foreach (HtmlElement htmlElement in list) {
                if(spec_rival_dom_name = my_site){
                    project.SendInfoToLog("Целевой сайт присутствует в рекламной спец.выдаче, пропускам, берем другой...", true);
                    continue;
                }
        }
        project.SendInfoToLog("Кликаем на сайт " + spec_rival, true);
        tab.FullEmulationMouseMoveToHtmlElement(spec_rival);
        Thread.Sleep(rnd.Next(450, 950));
        tab.FullEmulationMouseClick("left", "click");
        tab.WaitDownloading();
        Thread.Sleep(rnd.Next(250, 950));
        OwnCode.CommonCode.WalkCode(project, instance);
        tab.Close();
        }
Что должно происходить:
1. я беру 3и Html элемента, коллекция получается
2. потом надо в список их все скинуть (в массив вроде нельзя)
3. потом кликнуть по всем 3м, если среди них найден целевой сайт, то пропустить этот элемент

Ошибки, которые получаю:
Ошибка в действии "CS1502" "Наиболее подходящий перегруженный метод для "System.Collections.Generic.List<ZennoLab.CommandCenter.HtmlElement>.Add(ZennoLab.CommandCenter.HtmlElement)" имеет несколько недопустимых аргументов". [Строка: 184; Cтолбец: 3]

Ошибка в действии "CS1503" "Аргумент "1": преобразование типа из "string" в "ZennoLab.CommandCenter.HtmlElement" невозможно". [Строка: 184; Cтолбец: 12]

Ошибка в действии "CS0029" "Неявное преобразование типа "string" в "bool" невозможно". [Строка: 186; Cтолбец: 8]
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 370
Баллы
113
spec_rival_dom_name = my_site
Должно быть ==, иначе это строка, о чём написано в ошибке, ещё и c указанием строки.
list.Add(spec_rival); foreach (HtmlElement htmlElement in list) { if(spec_rival_dom_name = my_site){ project.SendInfoToLog("Целевой сайт присутствует в рекламной спец.выдаче, пропускам, берем другой...", true); continue; } }
В данном куске у тебя никак не используется htmlElement.
Ошибка в действии "CS1503" "Аргумент "1": преобразование типа из "string" в "ZennoLab.CommandCenter.HtmlElement" невозможно". [Строка: 184; Cтолбец: 12]
Вероятно, не из этой части кода или spec_rival где-то объявлена как string.

И офорляй тему и код получше. Крепить тестовые шаблоны не запрещено. :-)
 
  • Спасибо
Реакции: VladZen

artsmm

Client
Регистрация
03.10.2018
Сообщения
1 136
Благодарностей
196
Баллы
63
В данном куске у тебя никак не используется htmlElement
Спасибо за ответ. Как правильно тут сделать?

Вероятно, не из этой части кода или spec_rival где-то объявлена как string
Там объявляется spec_rival как string, потому что домен в этом формате должен быть

тестовые шаблоны
Прикрепил
 

Вложения

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 370
Баллы
113
  • Спасибо
Реакции: zortexx

artsmm

Client
Регистрация
03.10.2018
Сообщения
1 136
Благодарностей
196
Баллы
63

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