Проблем:
- Има някои редки случаи, когато автоматизираме приложения, когато попадаме на полета като “DatePicker”, които са зададени “readOnly”
- Възможно е да се автоматизира и това, но нека бъдем честни тук и се съгласим, че това е досадна работа, особено когато трябва да изберем някаква конкретна дата в миналото или бъдещето.
- Освен това не си струва да обръщате внимание и да прилагате усилия и време поне когато е наличен по-добър подход или заобиколно решение, което може да спести много време и усилия.
Решение:
- Сега, какво ще стане, ако кажа, че можем да премахнем този атрибут само за четене и след това можем да напишем дата точно като нормално въвеждане на текст. Ще бъдете развълнувани, нали?
- Да, можем да премахнем този атрибут само за четене с jQuery в няколко кодови реда и това е общо взето.
- Тук ще обясня с пример за рамката Puppeteer с CodeceptJS, но логиката ще остане същата и за други рамки. Просто синтаксисът ще се промени.
Пример:
<input type="text" class="column_activeFrom" id="stu" readonly="readonly">
- По-горе е примерът за обект DatePicker, който ще използваме за обяснение.
- Тъй като jQuery е богата на функции библиотека, разработена, за да направи живота по-лесен за справяне с нуждите на JS за уебсайтовете.
- метод removeAttr — Един от вградените методи ще изтрие атрибута readOnly за посочения елемент, следователно можем да въведем директно дата, която по-рано беше ограничена.
Синтаксис: $(селектор).removeAttr(атрибут)
Тук,
- Селектор = Елемент, който искахме да променим. В този пример това е селектор или локатор за DatePicker.
- Атрибут = Използва се за споменаване на един или повече атрибути за премахване. Множество атрибути могат да бъдат разделени с помощта на интервален оператор. В нашия случай това е „само за четене“.
Сега трябва да идентифицираме локатор/селектор за нашия елемент Datepicker. Имаме много възможни начини. Тук показвам три начина,
- С ID: #stu
- С етикет: вход
- С клас: input.column_activeFrom
С Puppeteer с CodeceptJS:
I.executeScript(function () { $('input.column_activeFrom').removeAttr("readonly"); });
Надявам се това да помогне и ви благодаря, че прочетохте!