开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 188|回复: 3
收起左侧

[易语言] 用 EdgeView浏览器框架 的 “全局_浏览器.执行脚本”来执...

[复制链接]
结帖率:92% (23/25)
发表于 2025-6-10 15:42:35 | 显示全部楼层 |阅读模式   江苏省苏州市
9精币
const input = document.querySelector("#gg-comp > div.short-title-form > div > span > input");
input.focus();
input.value = ""; // 先清空
document.execCommand('insertText', false, "测试填表文本"); // 模拟真实输入


以上命令在夸克浏览器调试是可以正常填表的,换到用  EdgeView浏览器框架 的  “全局_浏览器.执行脚本”来执行此脚本命令的时候,就填不进去了,麻烦大神帮忙看一下要怎么修改,谢谢


回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳

结帖率:100% (1/1)

签到天数: 19 天

发表于 2025-6-10 16:30:16 | 显示全部楼层   河南省郑州市
在控制台输入正常吗
回复

使用道具 举报

结帖率:92% (23/25)

签到天数: 6 天

 楼主| 发表于 2025-6-10 16:45:10 | 显示全部楼层   江苏省苏州市
afu45 发表于 2025-6-10 16:30
在控制台输入正常吗

是的,在控制台调试正常,怎么 EdgeView浏览器框架模块填入进去呢
回复

使用道具 举报

结帖率:55% (11/20)

签到天数: 9 天

发表于 2025-6-10 18:31:15 | 显示全部楼层   浙江省湖州市
### 问题分析

你遇到的问题是脚本在夸克浏览器中可以正常工作,但在 EdgeView 浏览器框架中无法填入内容。这通常是因为不同浏览器对 `document.execCommand` 的支持程度不同,或者自动化操作触发了浏览器的安全机制。

### 解决方案

以下是几种可能的解决方案,按推荐顺序排列:

#### 方案1:使用原生 input 事件模拟用户输入

```javascript
const input = document.querySelector("#gg-comp > div.short-title-form > div > span > input");
input.focus();
input.value = ""; // 清空原有内容

// 使用 dispatchEvent 模拟真实用户输入
const text = "测试填表文本";
for (let i = 0; i < text.length; i++) {
    const char = text[i];
    input.value += char;
   
    // 触发输入事件
    input.dispatchEvent(new Event('input', { bubbles: true }));
    input.dispatchEvent(new Event('change', { bubbles: true }));
   
    // 模拟真实输入的延迟
    await new Promise(resolve => setTimeout(resolve, 50 + Math.random() * 50));
}

// 触发 blur 事件
input.blur();
```

#### 方案2:使用 setRangeText 方法(现代浏览器支持更好)

```javascript
const input = document.querySelector("#gg-comp > div.short-title-form > div > span > input");
input.focus();
input.value = ""; // 清空原有内容

// 使用 setRangeText 方法
const text = "测试填表文本";
input.setRangeText(text, 0, input.value.length, 'end');

// 触发必要的事件
input.dispatchEvent(new Event('input', { bubbles: true }));
input.dispatchEvent(new Event('change', { bubbles: true }));
input.blur();
```

#### 方案3:使用 Selection API(更接近原生输入行为)

```javascript
const input = document.querySelector("#gg-comp > div.short-title-form > div > span > input");
input.focus();
input.value = ""; // 清空原有内容

const text = "测试填表文本";

// 设置光标位置
const selection = window.getSelection();
const range = document.createRange();
range.selectNodeContents(input);
range.collapse(false); // 将光标放在末尾
selection.removeAllRanges();
selection.addRange(range);

// 插入文本
document.execCommand('insertText', false, text);

// 触发必要的事件
input.dispatchEvent(new Event('input', { bubbles: true }));
input.dispatchEvent(new Event('change', { bubbles: true }));
input.blur();
```

### 为什么原代码不工作

1. **`document.execCommand` 被弃用**:许多现代浏览器正在逐步淘汰这个方法,尤其是在自动化测试场景中
2. **安全机制限制**:EdgeView 可能对自动化操作有更严格的安全限制
3. **事件触发不足**:简单设置 value 不会触发所有必要的浏览器事件,导致表单验证或提交机制未被激活

### 建议尝试顺序

1. 先尝试方案1,这是最接近真实用户输入的模拟方式
2. 如果方案1失败,尝试方案2,它使用了现代的 setRangeText API
3. 如果仍然失败,尝试方案3,它结合了 Selection API 和 execCommand

如果所有方法都失败,可能需要检查 EdgeView 浏览器框架的特定配置或安全设置,或者考虑使用框架提供的自动化 API(如果有)。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表