|
@@ -40,9 +40,10 @@
|
|
</teleport>
|
|
</teleport>
|
|
</template>
|
|
</template>
|
|
<script setup>
|
|
<script setup>
|
|
-import { reactive, watch, onMounted, onBeforeUnmount } from 'vue';
|
|
|
|
|
|
+import { reactive, watch, onMounted, onBeforeUnmount, toRaw } from 'vue';
|
|
import { finder } from '@medv/finder';
|
|
import { finder } from '@medv/finder';
|
|
import { debounce } from '@/utils/helper';
|
|
import { debounce } from '@/utils/helper';
|
|
|
|
+import getSelectorOptions from '@/content/elementSelector/getSelectorOptions';
|
|
import { generateXPath, getElementPath, getElementRect } from '@/content/utils';
|
|
import { generateXPath, getElementPath, getElementRect } from '@/content/utils';
|
|
import findElementList from '@/content/elementSelector/listSelector';
|
|
import findElementList from '@/content/elementSelector/listSelector';
|
|
import generateElementsSelector from '@/content/elementSelector/generateElementsSelector';
|
|
import generateElementsSelector from '@/content/elementSelector/generateElementsSelector';
|
|
@@ -178,7 +179,7 @@ function retrieveElementsRect({ clientX, clientY, target: eventTarget }, type) {
|
|
Object.assign(payload, {
|
|
Object.assign(payload, {
|
|
click: true,
|
|
click: true,
|
|
selectorType: props.selectorType,
|
|
selectorType: props.selectorType,
|
|
- selectorSettings: props.selectorSettings,
|
|
|
|
|
|
+ selectorSettings: toRaw(props.selectorSettings),
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
@@ -221,17 +222,18 @@ function retrieveElementsRect({ clientX, clientY, target: eventTarget }, type) {
|
|
if (type === 'selected') {
|
|
if (type === 'selected') {
|
|
if (!frameElement) resetFramesElements();
|
|
if (!frameElement) resetFramesElements();
|
|
|
|
|
|
|
|
+ const selectorOptions = getSelectorOptions(props.selectorSettings);
|
|
let selector = generateElementsSelector({
|
|
let selector = generateElementsSelector({
|
|
target,
|
|
target,
|
|
frameElement,
|
|
frameElement,
|
|
hoveredElements,
|
|
hoveredElements,
|
|
list: isSelectList,
|
|
list: isSelectList,
|
|
selectorType: props.selectorType,
|
|
selectorType: props.selectorType,
|
|
- selectorSettings: props.selectorSettings,
|
|
|
|
|
|
+ selectorSettings: selectorOptions,
|
|
});
|
|
});
|
|
|
|
|
|
if (frameElement) {
|
|
if (frameElement) {
|
|
- const frameSelector = finder(frameElement);
|
|
|
|
|
|
+ const frameSelector = finder(frameElement, selectorOptions);
|
|
selector = `${frameSelector} |> ${selector}`;
|
|
selector = `${frameSelector} |> ${selector}`;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -261,7 +263,6 @@ function onClick(event) {
|
|
}
|
|
}
|
|
function onMessage({ data }) {
|
|
function onMessage({ data }) {
|
|
if (data.type !== 'automa:iframe-element-rect') return;
|
|
if (data.type !== 'automa:iframe-element-rect') return;
|
|
-
|
|
|
|
if (data.click) {
|
|
if (data.click) {
|
|
const frameSelector =
|
|
const frameSelector =
|
|
props.selectorType === 'css'
|
|
props.selectorType === 'css'
|