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

  • Автор темы Автор темы Shytov
  • Дата начала Дата начала

Shytov

Client
Регистрация
11.09.2018
Сообщения
172
Реакции
40
Баллы
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. Последовательность не содержит соответствующий элемент
 
было удобно работать и не пришлось поднимать Apium, качать библиотеки и настраивать Nox - организую доступ через TeamViwer.
Удобно работать на своем оборудовании, а так больше похоже на то, что не хотите давать полноценный доступ к коду.
 
Удобно работать на своем оборудовании, а так больше похоже на то, что не хотите давать полноценный доступ к коду.
Отчасти вы правы, но это не принципиально. Если вам удобней у себя, то ни каких проблем.
 
Если вам удобней у себя, то ни каких проблем.
Напишите в личку, что за приложение. Назначение понятно, но разбираться в чужом коде, который еще и не работает совсем не хочется.
 
Выглядит так словно Списка 2 в проекте и нет
 
Нужно посмотреть, elements.ToString() в лог что-то выведет или нет, похоже просто нечего положить в список. Возможно даже сам драйвер не подключен.
 
Мб главный путь не отдает строки
Код:
Развернуть Свернуть Копировать
if(elements.Count > 0)
{
    foreach(var oneElement in elements) // делаем перебор коллекции
    {
        listElements.Add(oneElement.GetAttribute("text").ToString()); // добавляем каждый элемент в конец списка
    }
}
 
Если брать только одну строчку - то работает
Код:
Развернуть Свернуть Копировать
project.Variables["test"].Value = driver.FindElementByXPath("//android.widget.TextView[contains(@resource-id, 'mobi.chat:id/count_members')]").GetAttribute("text");
 
Если брать только одну строчку - то работает
Код:
Развернуть Свернуть Копировать
project.Variables["test"].Value = driver.FindElementByXPath("//android.widget.TextView[contains(@resource-id, 'mobi.chat:id/count_members')]").GetAttribute("text");
Получается, что не у всех elements есть элемент с атрибутом text и нужно делать проверку перед тем как получать значение атрибута text
 
Получается, что не у всех elements есть элемент с атрибутом text и нужно делать проверку перед тем как получать значение атрибута text
У всех есть элементов есть атрибут текст. Туда и выводятся нужные мне данные
 
У всех есть элементов есть атрибут текст. Туда и выводятся нужные мне данные
Может весь кусок с элементами посмотрим? в том сниппете нет элементов с атрибутом 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">
 
Видимо я вас не правильно понял.
Хотелось посмотреть на весь кусок с элементами с атрибутом 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">
 
Вопрос решен. Отдельная благодарность @doc
 

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