Не работает один и тот же код в разных браузерах

ErrorApple

Client
Регистрация
09.12.2017
Сообщения
18
Благодарностей
3
Баллы
3
Недавно начал осваивать C#. Еще очень много чего не знаю.

Есть такой код, кликает по списку каналов в telegram, браузер стоит Chrome, версия последняя 7.3.1.1:
C#:
Tab tab = instance.ActiveTab;
HtmlElement he = tab.FindElementByTag("body", 0);
string name = "";
string xpath = string.Format(@"//div[@class='im_dialogs_scrollable_wrap nano-content']/descendant::span[contains(text(), '{0}')]/ancestor::a[@class='im_dialog']", name);
var coll = he.FindChildrenByXPath(xpath);

int count = coll.Count;
string countString = Convert.ToString(coll.Count);
project.SendInfoToLog(countString);
project.SendInfoToLog("Берем канал из коллекции");

foreach (HtmlElement element in coll)
{
    project.SendInfoToLog(element.TagName);
    //element.RiseEvent("click", "full");
    element.Click();
    Thread.Sleep(1000);   
}
Если начать выполнять то получается что он кликает на первый элемент в цикле, а дальше судя по логу идут пустые элементы:
Тип Время Сообщение
14:13:24 43
14:13:24 Берем канал из коллекции
14:13:24 a
14:13:25
14:13:26
14:13:27
14:13:28
14:13:29
14:13:30
14:13:31
14:13:32
14:13:33
14:13:34

Но если закомментировать строку //element.Click(); и оставить только вывод элементов лог, то в логе получается он берет все элементы по порядку из коллекции.
Тип Время Сообщение
14:26:56 48
14:26:56 Берем канал из коллекции
14:26:56 a
14:26:57 a
14:26:58 a
14:26:59 a
14:27:00 a
14:27:01 a
14:27:02 a
14:27:03 a
14:27:04 a

То есть поидее как и должен работать, но не работает почему-то если вызвать действие Click на элемент.

Нашел подобную тему - https://zennolab.com/discussion/threads/foreach-klik-v-cikle-ne-rabotaet.53054/
И вроде как переписал код с решением которое там предложено:
C#:
Tab tab = instance.ActiveTab;
HtmlElement he = tab.FindElementByTag("body", 0);
string name = "";
string xpath = string.Format(@"//div[@class='im_dialogs_scrollable_wrap nano-content']/descendant::span[contains(text(), '{0}')]/ancestor::a[@class='im_dialog']", name);
HtmlElementCollection coll = he.FindChildrenByXPath(xpath);

HtmlElement element;
int count = coll.Count;
string countString = Convert.ToString(coll.Count);
project.SendInfoToLog(countString);
project.SendInfoToLog("Берем канал из коллекции");
bool blnUnsub = true;

for (int i = 0; i < count; i++)
{
    element = coll.ElementAt(i);
    project.SendInfoToLog(element.TagName);
    //element.RiseEvent("click", "full");
    element.Click();
    Thread.Sleep(1000);
        
}

Но в результате получаю тоже самое + ошибку после нескольких повторений:
Тип Время Сообщение
14:31:56 a
14:31:57
14:31:58
14:31:59
14:32:00
14:32:01
14:32:02
14:32:03
14:32:04
14:32:05 "Заданный аргумент находится вне диапазона допустимых значений.
Имя параметра: index"


А теперь самое интересное, если запустить этот код(с циклом foreach) в firefox, то все работает как надо.
Видимо я что-то упускаю и в chrome надо как-то по другому писать?
 

SergSh

Client
Регистрация
10.05.2017
Сообщения
541
Благодарностей
395
Баллы
63
Попробуй с точкой в xpath (для Child элементов точка нужна)
string xpath = string.Format(@"//div[@class='im_dialogs....
string xpath = string.Format(@".//div[@class='im_dialogs....
 

ErrorApple

Client
Регистрация
09.12.2017
Сообщения
18
Благодарностей
3
Баллы
3
Попробуй с точкой в xpath (для Child элементов точка нужна)
string xpath = string.Format(@"//div[@class='im_dialogs....
string xpath = string.Format(@".//div[@class='im_dialogs....
Увы, к сожалению не дало результата.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 691
Баллы
113
задача то какая стоит ? сравнить работу на разных движках или какая то другая ?
ну по разному работает и что ? приведенный код абсолютно бессмысленный, что для лисы , что для хрома.
где проверки на наличие элемента ? где проверки на видимость элемента ? где проверки на пустой объект ?
 

ErrorApple

Client
Регистрация
09.12.2017
Сообщения
18
Благодарностей
3
Баллы
3
задача то какая стоит ? сравнить работу на разных движках или какая то другая ?
ну по разному работает и что ? приведенный код абсолютно бессмысленный, что для лисы , что для хрома.
где проверки на наличие элемента ? где проверки на видимость элемента ? где проверки на пустой объект ?
Шаблон нормально работал в ff, решил в chrome перевести все. Стал разбираться и искать выход из проблемы, уперся вот в то что написал, из-за отсутствия какого-либо опыта не знал что делать дальше. Не ожидал что ff и chrome так кардинально различаются, думал что может просто какой-то небольшой детали не хватает. Но судя по вашим вопросам видимо еще рано полез во все это, надо разбираться сначала более детально в понимании работы всего этого.
 

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