Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Заблокирован

[Selenium] Не могу понять почему появляются ошибки с элементами страницы

17.04.2017, 02:29. Показов 1846. Ответов 3

Студворк — интернет-сервис помощи студентам
C# + selenium

C#
1
2
IWebElement cet1 = Browser.FindElement(By.XPath(".//*[@id='content']/div/div[1]/div[1]/div[4]/div/div/div[3]/div[1]/table/tbody/tr[1]/td[2]"));
listboxlog.Items.Add(cet1.Text);
Вроде бы все правильно в коде написано.

XPath адрес к элементу на сайте(td[2]), взят через плагин фаербаг в мозиле. - 99% адрес правильный.
Но, изредка выдает ошибку - типа этого(td[2]) элемента нет на сайте. Но он есть! И адрес проверял в тот же момент. Элемент есть, подсвечивается, находится.
Так почему же иногда элемента не существует?

И иногда выдает ошибку подсвечивая этот элемент кода "cet1.Text" - element is not attachment this a page document. Что делать в этом случае?

Добавлено через 55 минут
Кажется проблема решилась вот таким способом. Не думаю, что этот вариант разумный, а именно задействовать цикл, чтобы вытянуть содержимое двух элементов. Что скажите?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
string amend1 = string.Empty;
                         string amend2 = string.Empty;
                       
                         List<IWebElement> bigTable = Browser.FindElements(By.CssSelector(".bigTable tr.bodyTr td.num")).ToList();
                        for (int i = 0; i < bigTable.Count; i++)
                        {
                            if (i == 0)
                            {
                                amend1 = bigTable[0].Text;
                            }
                            if (i == 1)
                            {
                                amend2 = bigTable[1].Text;
                            }
 
                        }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.04.2017, 02:29
Ответы с готовыми решениями:

Не могу понять, почему программа работает неправильно( Знаю, что где-то ошибки, но не могу найти
{Ввести последовательность натуральных чисел Aj j=1...n (n&lt;=1000). Упорядочить последовательность по неубыванию наименььшей цифры...

Не могу понять, почему ошибки в моих текстах.
Всем привет! Кто нибудь помогите!!! есть документ, в нем поле ссылка на справочник. В справочнике имеется таблица не закрепленная не к...

Не могу понять почему не работает. Создаю игру Пятнашки. И ничего у меня не работает. И ошибки при запуске выдает
Не могу понять почему не работает. Создаю игру Пятнашки. И ничего у меня не работает. И ошибки при запуске выдает. Вот, подскажите...

3
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
17.04.2017, 03:22
Nina78, дай адрес сайта, если можно и какой элемент нужно найти
1
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18296 / 14220 / 5368
Регистрация: 17.03.2014
Сообщений: 28,897
Записей в блоге: 1
17.04.2017, 10:02
Nina78, возможно это происходит из-за javascript который добавляет/удаляет элементы. Решать нужно ожиданием появления определенных частей страницы (насколько я помню Selenium умеет это).

Цитата Сообщение от Nina78 Посмотреть сообщение
И иногда выдает ошибку подсвечивая этот элемент кода "cet1.Text" - element is not attachment this a page document.
Текст ошибки неточный по моему. Должно быть наверное "element is not attached to the page document". И эта ошибка тоже возникает из-за JS который успел удалить элемент пока выполнялась операция. Нужно дожидаться когда содержимое страницы перестанет меняться или перезапускать операцию в случае такого исключения.

Цитата Сообщение от Nina78 Посмотреть сообщение
Не думаю, что этот вариант разумный, а именно задействовать цикл, чтобы вытянуть содержимое двух элементов. Что скажите?
Не понятно зачем здесь цикл когда обращение всегда идет к 0 и 1 элементам.
1
Заблокирован
17.04.2017, 15:22  [ТС]
Вопрос решился с помощью try-catch. Все же хотелось идеально подогнать парсинг, без ошибок что бы было. Но видимо других решений не будет для сайтов, которые мгновенно скрывают\открывают текст.

Ребята, спасибо за ваши ответы! +1 всем поставил.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.04.2017, 15:22
Помогаю со студенческими работами здесь

Не могу понять почему не могу считать символьный ряд через cin.getline
Не могу понять почему не могу считать символьный ряд через cin.getline.Помогите позязя. #define _CRT_SECURE_NO_WARNINGS #include...

Не могу понять ошибки
Делаю д\з по информе, написал прогу. Большую часть ошибок исправил. А эти не могу понять. Вот коды: #include &lt;vcl.h&gt; #include...

Не могу понять причину ошибки
в общем есть поле с динамически созданными TImage procedure TForm1.btn3Click(Sender: TObject); var rect:TRect; begin ...

не могу понять ошибки в коде
Запускаю этот код в браузере: function getDate(str){ var regexp = /^(?\d)-(?\d)-(\d{3})$/; var f = str.match(regexp); ...

Не могу понять природу ошибки
Возникает ошибка при удалении памяти в куче, не могу понять почему. Код сократил. Компилятор - VisualStudio 2012, Windows 7 Ошибка:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru