Подправить код C#

Shytov

Client
Регистрация
11.09.2018
Сообщения
175
Благодарностей
39
Баллы
28
Нужно поправить готовый код. Есть мобильное приложение для чата, на странице 15 комнат. У каждой комнаты есть имя, ссылка и колво человек в комнате. Нужно собрать с страницы данные каждой комнаты и записать их в таблицу. Был добрый человек, который написал часть кода, но он не заработал. Может у вас получится? Понятное дело не бесплатно, но в разумных приделах. Что бы вам было удобно работать и не пришлось поднимать Apium, качать библиотеки и настраивать Nox - организую доступ через TeamViwer.

Одна комната из 15
Код:
<android.widget.LinearLayout>
    <android.widget.ImageView resource-id="mobi.chat:id/channel_icon">
    <android.widget.LinearLayout>
        <android.widget.TextView resource-id="mobi.chat:id/channel_name">
        <android.widget.TextView resource-id="mobi.chat:id/channel_permalink">
    <android.widget.TextView resource-id="mobi.chat:id/count_members">
Код на С#
Код:
IZennoList listElements = project.Lists["Список 2"]; // создаём объект lstTest типа IZennoList и привязываем его к списку проекта
var elements = driver.FindElementsByXPath("//android.widget.TextView[contains(@resource-id, 'mobi.chat:id/count_members')]"); // ищем все совпадения и сохраняем их в переменную elements
foreach(var oneElement in elements) // делаем перебор коллекции
{
listElements.Add(oneElement.GetAttribute("text").ToString()); // добавляем каждый элемент в конец списка
}
Но работать не хочет, вылетает с ошибкой:
Код:
Тип    Время    Сообщение
    02:45:03    Выполнение действия CSharp OwnCode. Последовательность не содержит соответствующий элемент
 

specialist

Client
Регистрация
28.12.2018
Сообщения
732
Благодарностей
343
Баллы
63
было удобно работать и не пришлось поднимать Apium, качать библиотеки и настраивать Nox - организую доступ через TeamViwer.
Удобно работать на своем оборудовании, а так больше похоже на то, что не хотите давать полноценный доступ к коду.
 

Shytov

Client
Регистрация
11.09.2018
Сообщения
175
Благодарностей
39
Баллы
28
Удобно работать на своем оборудовании, а так больше похоже на то, что не хотите давать полноценный доступ к коду.
Отчасти вы правы, но это не принципиально. Если вам удобней у себя, то ни каких проблем.
 

specialist

Client
Регистрация
28.12.2018
Сообщения
732
Благодарностей
343
Баллы
63
Если вам удобней у себя, то ни каких проблем.
Напишите в личку, что за приложение. Назначение понятно, но разбираться в чужом коде, который еще и не работает совсем не хочется.
 

AShaggy

Активный пользователь
Регистрация
25.11.2014
Сообщения
335
Благодарностей
143
Баллы
43
Выглядит так словно Списка 2 в проекте и нет
 

Shytov

Client
Регистрация
11.09.2018
Сообщения
175
Благодарностей
39
Баллы
28

specialist

Client
Регистрация
28.12.2018
Сообщения
732
Благодарностей
343
Баллы
63
Нужно посмотреть, elements.ToString() в лог что-то выведет или нет, похоже просто нечего положить в список. Возможно даже сам драйвер не подключен.
 

SergSh

Client
Регистрация
10.05.2017
Сообщения
541
Благодарностей
395
Баллы
63
Мб главный путь не отдает строки
Код:
if(elements.Count > 0)
{
    foreach(var oneElement in elements) // делаем перебор коллекции
    {
        listElements.Add(oneElement.GetAttribute("text").ToString()); // добавляем каждый элемент в конец списка
    }
}
 

Shytov

Client
Регистрация
11.09.2018
Сообщения
175
Благодарностей
39
Баллы
28
Если брать только одну строчку - то работает
Код:
project.Variables["test"].Value = driver.FindElementByXPath("//android.widget.TextView[contains(@resource-id, 'mobi.chat:id/count_members')]").GetAttribute("text");
 

SergSh

Client
Регистрация
10.05.2017
Сообщения
541
Благодарностей
395
Баллы
63
Если брать только одну строчку - то работает
Код:
project.Variables["test"].Value = driver.FindElementByXPath("//android.widget.TextView[contains(@resource-id, 'mobi.chat:id/count_members')]").GetAttribute("text");
Получается, что не у всех elements есть элемент с атрибутом text и нужно делать проверку перед тем как получать значение атрибута text
 

Shytov

Client
Регистрация
11.09.2018
Сообщения
175
Благодарностей
39
Баллы
28
Получается, что не у всех elements есть элемент с атрибутом text и нужно делать проверку перед тем как получать значение атрибута text
У всех есть элементов есть атрибут текст. Туда и выводятся нужные мне данные
 

SergSh

Client
Регистрация
10.05.2017
Сообщения
541
Благодарностей
395
Баллы
63
У всех есть элементов есть атрибут текст. Туда и выводятся нужные мне данные
Может весь кусок с элементами посмотрим? в том сниппете нет элементов с атрибутом text
  • <android.widget.LinearLayout>
  • <android.widget.ImageView resource-id="mobi.chat:id/channel_icon">
  • <android.widget.LinearLayout>
  • <android.widget.TextView resource-id="mobi.chat:id/channel_name">
  • <android.widget.TextView resource-id="mobi.chat:id/channel_permalink">
  • <android.widget.TextView resource-id="mobi.chat:id/count_members">
 

Shytov

Client
Регистрация
11.09.2018
Сообщения
175
Благодарностей
39
Баллы
28

SergSh

Client
Регистрация
10.05.2017
Сообщения
541
Благодарностей
395
Баллы
63
Видимо я вас не правильно понял.
Хотелось посмотреть на весь кусок с элементами с атрибутом text?
Код:
<android.widget.LinearLayout>
    <android.widget.ImageView resource-id="mobi.chat:id/channel_icon">
    <android.widget.LinearLayout>
        <android.widget.TextView resource-id="mobi.chat:id/channel_name">
        <android.widget.TextView resource-id="mobi.chat:id/channel_permalink">
    <android.widget.TextView resource-id="mobi.chat:id/count_members">
 

Shytov

Client
Регистрация
11.09.2018
Сообщения
175
Благодарностей
39
Баллы
28
Вопрос решен. Отдельная благодарность @doc
 

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