Nano Hash - криптовалюты, майнинг, программирование

Как получить текст из всех строк и столбцов в бесконечной прокручиваемой сетке ng с помощью транспортира?

Я пытаюсь написать функцию, которая возвращает полное содержимое сетки в массиве. Наша ng-grid имеет бесконечную прокрутку строк, а также прокрутку столбцов.

Я нашел ответ для прокрутки здесь Транспортир: Прокрутка таблицы и тестирование бесконечной прокрутки

Но я хочу полностью прокрутить сетку и получить данные, чтобы я мог проверить данные, когда применяю фильтры к сетке.

Любая помощь в этом очень ценится, спасибо

Пример HTML-кода для строк

<div class="ag-body" style="padding-top: 25px; padding-bottom: 30px;">
  <div class="ag-pinned-left-cols-viewport" style="display: inline; height: 245px;">
    <div class="ag-pinned-left-cols-container" style="width: 480px; height: 1830px; top: 0px;">
      <div class="ag-row ag-row-no-focus ag-row-even ag-row-level-0 ag-row-id-111 ag-row-index-10" style=" top: 300px; height: 30px;" row-id="111" row="10" v_element_id="19490">
        <div class="ag-cell ag-cell-no-focus ag-cell-value" style=" left: 0px; width: 35px;" colid="id" v_element_id="19491">
        <div class="ag-cell ag-cell-no-focus ag-cell-value" style=" left: 35px; width: 245px;" colid="title" v_element_id="19492">June12-AA-3</div>
        <div class="ag-cell ag-cell-no-focus ag-cell-value" style=" left: 280px; width: 200px;" colid="operation_status_enum" v_element_id="19493">INVALID</div>
      </div>
<div class="ag-row ag-row-no-focus ag-row-odd ag-row-level-0 ag-row-id-110 ag-row-index-9" style=" top: 270px; height: 30px;" row-id="110" row="9" v_element_id="20136">
<div class="ag-row ag-row-no-focus ag-row-even ag-row-level-0 ag-row-id-109 ag-row-index-8" style=" top: 240px; height: 30px;" row-id="109" row="8" v_element_id="20153">
<div class="ag-row ag-row-no-focus ag-row-even ag-row-level-0 ag-row-id-107 ag-row-index-6" style=" top: 180px; height: 30px;" row-id="107" row="6" v_element_id="20170">
<div class="ag-row ag-row-no-focus ag-row-odd ag-row-level-0 ag-row-id-108 ag-row-index-7" style=" top: 210px; height: 30px;" row-id="108" row="7" v_element_id="20187">
<div class="ag-row ag-row-no-focus ag-row-even ag-row-level-0 ag-row-id-105 ag-row-index-4" style=" top: 120px; height: 30px;" row-id="105" row="4" v_element_id="20204">
<div class="ag-row ag-row-no-focus ag-row-odd ag-row-level-0 ag-row-id-106 ag-row-index-5" style=" top: 150px; height: 30px;" row-id="106" row="5" v_element_id="20221">
<div class="ag-row ag-row-no-focus ag-row-odd ag-row-level-0 ag-row-id-104 ag-row-index-3" style=" top: 90px; height: 30px;" row-id="104" row="3" v_element_id="20238">
<div class="ag-row ag-row-no-focus ag-row-odd ag-row-level-0 ag-row-id-102 ag-row-index-1" style=" top: 30px; height: 30px;" row-id="102" row="1" v_element_id="20255">
<div class="ag-row ag-row-no-focus ag-row-even ag-row-level-0 ag-row-id-103 ag-row-index-2" style=" top: 60px; height: 30px;" row-id="102" row="1" v_element_id="20258">


  • Кажется, вам может быть лучше, если модульные тесты охватывают код фильтрации, чтобы убедиться, что при предоставлении определенного набора данных он правильно фильтрует данные. Также вы используете ng-grid или ui-grid? считаю, что последний заменяет первый, и ng-grid остановила разработку на некоторое время, по крайней мере, в какой-то момент. Кроме того, если вы хотите протестировать фильтрацию компонента, кажется более подходящим, чтобы этот тест находился в библиотеке компонентов, а не в библиотеке вашего проекта, но только мои 2 цента, я понимаю CYA и все такое. 26.05.2016
  • @shaunhusain спасибо за ваш комментарий. Большинство наших функциональных / e2e-тестов внешнего интерфейса зависят от данных сетки. Так что мне придется реализовать это как часть моего тестирования e2e. 26.05.2016
  • Откуда берутся данные в первую очередь? Это означает, что вы можете просто издеваться над ответом с заранее определенными данными с таким количеством строк данных, сколько вам нужно? Спасибо. 30.05.2016
  • @alecxe мы работаем над угловым издевательством. Тем временем я подумал, что было бы неплохо реализовать это, на всякий случай, если нам нужно протестировать сетку с большим количеством данных. 31.05.2016

Ответы:


1

Вам нужно найти последнюю строку из dom и использовать функцию javascript scrollintoview. Пожалуйста, найдите пример ниже.

var last_row=element.all(by.css(".ag-row")).last() //this will give you the last row from the grid
browser.executeScript("arguments[0].scrollIntoView();",last_row.getWebElement());

Это прокрутит всю сетку. Теперь вы можете получить весь текст из строки с помощью

element.all(by.css(".ag-row")).getText().then(function(RowValueArray) { 
         //do whatever you want to do with the values.
})

Надеюсь, это поможет вам!

31.05.2016

2

Я могу прокручивать сетку и получать данные из всех строк следующим образом. Я получил код scrollDown из транспортира: прокрутка таблица и тестирование бесконечной прокрутки (спасибо @alecxe)

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

  
    scrollDown() {
    return browser.executeScript("return arguments[0].offsetTop;", this.lastRow.getWebElement()).then((offset) => {
      browser.executeScript("arguments[0].scrollTop = arguments[1];", element(by.className("ag-body-viewport")).getWebElement(), offset);
    });
  }

  getRows() {
    return this.pinnedRows.getText();
  }

  getTotalRows() {
    const defer = Promise.defer();
    let allRows = [];

    for (let i = 0; i < 3; i++) {
      this.getRows().then((rows) => {
        allRows = allRows.concat(rows);
        this.scrollDown();
        this.waitToLoad();
        if (i === 2) {
          defer.resolve(allRows);
        }
      });
    }
    return defer.promise;
  }

  waitToLoad() {
    waitFor.elementToBeVisible(this.pinnedRows.get(15));
    browser.waitForAngular();
  }

В спецификации:

  getTotalRows().then((data) => {
      log.info(`TOTAL ROWS: ${data}`);
      log.info(`TOTAL NUMBER OF ROWS : ${data.length}`);
      expect(data.length).toBeGreaterThan(50);
    });

01.06.2016
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..