TestCafe - выберите опцию в <select> - PullRequest
0 голосов
/ 30 августа 2018

У меня есть <select> с несколькими <option> тегами. Некоторые из них отключены с помощью класса «is-disabled». Что я хочу сделать, это выбрать первый доступный вариант в списке. Для этого я использовал пример, который нашел на веб-сайте testcafe (https://devexpress.github.io/testcafe/documentation/recipes/testing-select-elements.html), но, похоже, не могу заставить его работать.

При запуске теста инструмент выполняет щелчок по кнопке выбора и второй, после чего он закрывается. После этого значение не выбирается.

Есть ли лучший способ обработки динамического выбора параметра? Или что будет лучшим решением? Любая помощь будет принята с благодарностью!

С уважением Корнел

SizeSelector component:

import {t, Selector} from 'testcafe';

class SizeSelector {

  constructor() {
    this._sizeSelector = Selector('.sizeSelectionGroup');
    this._selectors = this._sizeSelector.child('.productSizeSelection');
    this._widthSelector = this._selectors.nth(0);

    // todo other size types (single numeric/text)
  }

  // todo refactor
  async setFirstAvailableWidth() {
    const options = this._widthSelector.find('option'); // contains 13 elements while debugging
    const availableOptions = options.filter(node => {
      return !node.classList.contains('is-disabled');
    });

    const count = await availableOptions.count; // contains around 8 elements while debugging
    if (count > 0) {
      return await t
        .click(this._widthSelector)
        .click(availableOptions.nth(0))
        .expect(this._lengthSelector.value).ok(); // fails with value undefined
    }

    throw new Error('No available width found.');
  }
}

export default SizeSelector;

1 Ответ

0 голосов
/ 31 августа 2018

Так что я не уверен, сработает ли это именно для вас в вашей ситуации. Я попытался смоделировать раскрывающийся список, в котором было несколько вариантов, используя класс 'is-disabled' , и провел тест с функцией, которая щелкает самый первый параметр в раскрывающемся списке, который не отключен. Я основал эту функцию на отключении. это

Вот пример выпадающего списка, который я сделал

https://jsfiddle.net/L6p2u/190/

Вот тестовый код (оранжевый должен быть первым вариантом, который не отключен)

import { Selector, t } from 'testcafe';

fixture `testcafe canvas`
    .page `https://jsfiddle.net/L6p2u/190/`;

const medwait            = 5000
const longwait           = 15000;
const dropdown           = Selector('#colour');

async function selectFirstAvailableOption(selector) {
    const select = selector;
    await t // select the first available option
        .setTestSpeed(0.7)
        .hover(select)
        .expect(select.hasAttribute("disabled")).notOk({timeout: 5000})
        .click(select)
        .click(select
            .find("option")
            .filter((node) => {
                if (node && node.className.indexOf('is-disabled') == -1) {
                    return true;
                }
                return false;
            })
            .nth(0)).wait(5000); // this wait is just so you can see
}

test('Instructor', async t => {
    await t
        .switchToIframe('[name="result"]')
    await selectFirstAvailableOption(dropdown);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...