123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- /* eslint-disable consistent-return, no-param-reassign */
- import simulateEvent from '@/utils/simulate-event';
- import handleFormElement from '@/utils/handle-form-element';
- function handleElement(data, callback) {
- if (!data.selector) return null;
- const element = data.multiple
- ? document.querySelectorAll(data.selector)
- : document.querySelector(data.selector);
- if (typeof callback === 'boolean' && callback) return element;
- if (data.multiple) {
- element.forEach(callback);
- } else if (element) {
- callback(element);
- }
- }
- export function eventClick({ data }) {
- return new Promise((resolve) => {
- handleElement(data, (element) => {
- element.click();
- });
- resolve('');
- });
- }
- export function getText({ data }) {
- return new Promise((resolve) => {
- let regex;
- let textResult = '';
- if (data.regex) {
- regex = new RegExp(data.regex, data.regexExp.join(''));
- }
- handleElement(data, (element) => {
- let text = element.innerText;
- if (regex) text = text.match(regex).join(' ');
- textResult += `${text} `;
- });
- resolve(textResult);
- });
- }
- export function elementScroll({ data }) {
- return new Promise((resolve) => {
- handleElement(data, (element) => {
- element.scroll(data.scrollX, data.scrollY);
- });
- resolve('');
- });
- }
- export function attributeValue({ data }) {
- return new Promise((resolve) => {
- let result = '';
- handleElement(data, (element) => {
- const value = element.getAttribute(data.attributeName);
- window.dispatchEvent(new Event('scroll'));
- result += `${value} `;
- });
- resolve(result);
- });
- }
- export function forms({ data }) {
- return new Promise((resolve) => {
- const elements = handleElement(data, true);
- console.log(elements, 'form');
- if (data.multiple) {
- const promises = Array.from(elements).map((element) => {
- return new Promise((eventResolve) => {
- handleFormElement(element, data, eventResolve);
- });
- });
- Promise.allSettled(promises).then(() => {
- console.log('hola amigo');
- resolve('');
- });
- } else if (elements) {
- handleFormElement(elements, data, resolve);
- } else {
- resolve();
- }
- });
- }
- export function triggerEvent({ data }) {
- return new Promise((resolve) => {
- handleElement(data, (element) => {
- simulateEvent(element, data.eventName, data.eventParams);
- });
- resolve('');
- });
- }
- export function link({ data }) {
- return new Promise((resolve) => {
- const element = document.querySelector(data.selector);
- if (!element) {
- resolve('');
- return;
- }
- const url = element.href;
- if (url) window.location.href = url;
- resolve('');
- });
- }
|