Kaynağa Gözat

fix: iframe element not found

Ahmad Kholid 2 yıl önce
ebeveyn
işleme
9deb8df26f
2 değiştirilmiş dosya ile 8 ekleme ve 4 silme
  1. 7 3
      src/content/index.js
  2. 1 1
      src/workflowEngine/WorkflowEngine.js

+ 7 - 3
src/content/index.js

@@ -4,9 +4,8 @@ import cloneDeep from 'lodash.clonedeep';
 import findSelector from '@/lib/findSelector';
 import { sendMessage } from '@/utils/message';
 import automa from '@business';
-import FindElement from '@/utils/FindElement';
 import { toCamelCase, isXPath } from '@/utils/helper';
-import handleSelector from './handleSelector';
+import handleSelector, { queryElements } from './handleSelector';
 import blocksHandler from './blocksHandler';
 import showExecutedBlock from './showExecutedBlock';
 import shortcutListener from './services/shortcutListener';
@@ -53,7 +52,12 @@ async function executeBlock(data) {
       findBy = isXPath(frameSelector) ? 'xpath' : 'cssSelector';
     }
 
-    const frameElement = FindElement[findBy]({ selector: frameSelector });
+    const frameElement = await queryElements({
+      findBy,
+      multiple: false,
+      waitForSelector: 5000,
+      selector: frameSelector,
+    });
     const frameError = (message) => {
       const error = new Error(message);
       error.data = { selector: frameSelector };

+ 1 - 1
src/workflowEngine/WorkflowEngine.js

@@ -297,7 +297,7 @@ class WorkflowEngine {
   addLogHistory(detail) {
     if (detail.name === 'blocks-group') return;
 
-    const isLimit = this.history.length >= this.logsLimit;
+    const isLimit = this.history?.length >= this.logsLimit;
     const notErrorLog = detail.type !== 'error';
 
     if ((isLimit || !this.saveLog) && notErrorLog) return;