Проблем:

  • Има някои редки случаи, когато автоматизираме приложения, когато попадаме на полета като “DatePicker”, които са зададени “readOnly”
  • Възможно е да се автоматизира и това, но нека бъдем честни тук и се съгласим, че това е досадна работа, особено когато трябва да изберем някаква конкретна дата в миналото или бъдещето.
  • Освен това не си струва да обръщате внимание и да прилагате усилия и време поне когато е наличен по-добър подход или заобиколно решение, което може да спести много време и усилия.

Решение:

  • Сега, какво ще стане, ако кажа, че можем да премахнем този атрибут само за четене и след това можем да напишем дата точно като нормално въвеждане на текст. Ще бъдете развълнувани, нали?
  • Да, можем да премахнем този атрибут само за четене с jQuery в няколко кодови реда и това е общо взето.
  • Тук ще обясня с пример за рамката Puppeteer с CodeceptJS, но логиката ще остане същата и за други рамки. Просто синтаксисът ще се промени.

Пример:

<input type="text" class="column_activeFrom" id="stu" readonly="readonly">
  • По-горе е примерът за обект DatePicker, който ще използваме за обяснение.
  • Тъй като jQuery е богата на функции библиотека, разработена, за да направи живота по-лесен за справяне с нуждите на JS за уебсайтовете.
  • метод removeAttr — Един от вградените методи ще изтрие атрибута readOnly за посочения елемент, следователно можем да въведем директно дата, която по-рано беше ограничена.

Синтаксис: $(селектор).removeAttr(атрибут)

Тук,

  • Селектор = Елемент, който искахме да променим. В този пример това е селектор или локатор за DatePicker.
  • Атрибут = Използва се за споменаване на един или повече атрибути за премахване. Множество атрибути могат да бъдат разделени с помощта на интервален оператор. В нашия случай това е „само за четене“.

Сега трябва да идентифицираме локатор/селектор за нашия елемент Datepicker. Имаме много възможни начини. Тук показвам три начина,

  1. С ID: #stu
  2. С етикет: вход
  3. С клас: input.column_activeFrom

С Puppeteer с CodeceptJS:

I.executeScript(function () {
 $('input.column_activeFrom').removeAttr("readonly");
});

Надявам се това да помогне и ви благодаря, че прочетохте!

Референции: