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

Выпадающий список в транспортире с машинописным текстом

Я новичок в Protractor и хочу автоматизировать выбор раскрывающегося списка. У меня есть некоторое представление о том, как получить его в javascript, но здесь я использую машинописный текст. Может ли кто-нибудь предложить мне, как получить раскрывающийся список на основе текста, который мы передаем.

eg :

<ul class="ui-dropdown-items ui-dropdown-list ui-widget-content ui-widget ui-corner-all ui-helper-reset ng-tns-c46-10 ng-star-inserted" style="">
                        <!---->
                        <!----><!---->
                            <!---->
                            <!----><li class="ng-tns-c46-10 ui-dropdown-item ui-corner-all ng-star-inserted">
                                <!----><span class="ng-tns-c46-10 ng-star-inserted">Value 1</span>
                                <!---->
                            </li><li class="ng-tns-c46-10 ui-dropdown-item ui-corner-all ng-star-inserted">
                                <!----><span class="ng-tns-c46-10 ng-star-inserted">Value 2</span>
                                <!---->
                            </li><li class="ng-tns-c46-10 ui-dropdown-item ui-corner-all ng-star-inserted">
                                <!----><span class="ng-tns-c46-10 ng-star-inserted">Value 3</span>
                                <!---->
                            </li>


                        <!---->
                        <!---->
                    </ul>

как я могу выбрать раскрывающееся значение на основе видимого текста.


  • Почему это будет другой локатор с машинописным текстом? Это должно быть то же самое, только с добавлением возвращаемых типов. Можете ли вы опубликовать, как бы вы сделали это в Javascript? 10.05.2018

Ответы:


1

Ну, это не самый эффективный способ, это своего рода хакерский способ. Вы можете сделать что-то вроде этого:

object class `getDropDown() {
                   return element(by.className('the class you assign to the dropdown');

затем в вашем классе спецификаций:

`it('should select an element in the drop down), () => {
                             page.navigateTo(); 
                             page.getDropDown().sendKeys(Key.DOWN)
                             page,getDropDown().sendKeys(Key.RETURN)`

Хотя это не самый практичный способ, он работает и очень прост в реализации. Теперь что-то подобное нецелесообразно, когда у вас много ли и нужно выбрать конкретный. Для этого, в зависимости от того, как вы создали свой раскрывающийся список, вы можете просто сделать то, что я сделал выше, ожидать, а не использовать вниз и ввести, вы можете просто сделать sendKeys('whatever item you need'). В моем случае это будет работать, когда я буду тестировать проверку для определенного ли в моей форме. Но это может не сработать, если ваша форма не позволяет вводить текст в раскрывающемся списке.

18.06.2018

2

Вы можете сделать что-то вроде:

// select combobox
let container = element(by.css('ul'));
// select option
container.element(by.cssContainingText('value 1')).click();

Если вы хотите автоматизировать, вы можете создать класс-оболочку. В вашем случае это будет выглядеть следующим образом:

import { browser, element, by, ElementArrayFinder, ElementFinder, Locator } from 'protractor';
import { By } from 'selenium-webdriver';
import { ProtractorLocator } from 'protractor/built/locators';

const locators = {
  byText: (text: string) => by.cssContainingText('li', text)
};

export class ListWrapper {

  constructor(private container: ElementFinder) {
    // for example: let container = element(by.css('ul'))
  }

  public async selectByText(text: string): Promise<void> {
    await this.findChild(locators.byText(text)).click();
  }

  public findChild(locator: By | Locator): ElementFinder {
    return this.container.element(locator);
  }

}

Затем в тесте вы можете сделать что-то вроде:

let listWrapper = new ListWrapper(element(by.css('ul')));
await listWrapper.selectByText('Value 1');

Я не проверял это, но это должно работать, поскольку я использую его почти так же.

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

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

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

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

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

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

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

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