社区编辑申请
注册/登录
前端自动脚本中常见的几个问题,你遇到了吗?
开发 前端
自动脚本没有想象中那么难,作为一个前端,我们依旧使用我们最擅长的 js 。

公司有个审核平台,下班时间没人审核,审核速度更是着急人,所以老板让我写一个能够自动审核的脚本,只用于下班时间。我就开始了自己的第一个自动脚本。

自动脚本没有想象中那么难,作为一个前端,我们依旧使用我们最擅长的 js 。写一段需要执行的 js 代码,然后放入到调试器中回车执行,此时我们的自动脚本就能正常跑起来喽!

示例:

没有写过自动脚本的前端,赶紧看过来!写自动脚本常见的几个问题分别如下:

问题1:获取到的元素是为 null ?

我们通常直接使用 document.getElementById('btn') 就可以稳定地获取到元素,但是我今天在别人的网站里,审查元素的时候,可以找到 id 为 btn 的元素,但是在调试器中获取到的一直是 null 。

现象:document.getElementById('pass-btn') 直接获取时,返回的是 null ,调试器中选中元素,然后再获取元素时,此时获取到的元素不为空。

原因:检查页面结构中是否包含 iframe 结构,如果元素是包含在 iframe 引入的外部文件中,就会出现上述问题。

解决办法:先找到 iframe ,在当前对象中查找 DOM

var iframe = window.document.getElementById('myframe')
var test = iframe.contentWindow.document.getElementById('pass-btn')
console.log('-->', test)

contentWindow 是一个只读属性,返回指定 iframe 的窗口对象,各个浏览器均支持。

此时就能很稳定的查找到元素了,不需要其他任何操作。

问题2:使用 js 添加的点击事件无效?

js 中触发点击事件有两种方式:click 和 onclick 。

现象:自己在本地写的触发点击事件,使用的 onclick() 在本地示范的时候,可以触发,没有任何问题,如:

<a href="javascript:;" id="btn" onclick="alert('2')">
确定
</a>

<script>
var btn = document.getElementById('btn')
btn.onclick()
</script>

此时如果换成:

var btn = document.getElementById('btn')
btn.addEventListener('click', () => {
console.log('执行')
})
btn.onclick()

此时的点击事件就会失效,运行脚本的时候静静躺那不执行,我们来看看 click 与 onclick 的区别?

click 是一个方法, onclick 是一个事件。

方法是写语句直接调用,即显示调用,可以触发 onclick 事件,事件一般都以 on 开头,不需要程序调用,事件触发的函数会在相应的事件触发时调用。

所以写自动脚本时,使用 click 去调用,模拟用户的点击操作。

问题3:调试器中断点如何避开?

有经验的程序员会在项目重要的操作流程中加入 debugger 断点操作,在不打开调试器的时候能够正常运行,打开调试之后就会出现断点,阻止我们在调试器执行脚本。我们如何忽略断点呢?

现象:添加 debugger 后,打开调试模式,程序就会执行到断点时停住,代码无法继续向下执行!

解决办法:禁用所有断点,如图所示:

责任编辑:张燕妮 来源: 博客园
相关推荐

2022-06-12 06:48:34

2022-06-05 21:09:47

Python办公自动化

2022-06-20 22:37:25

Linux操作系统命令

2022-06-15 11:02:40

网络安全运营

2022-05-23 07:48:10

zabbix监控CentOS7

2022-05-11 08:23:54

自动化测试软件测试

2022-05-07 14:08:42

Python自动化脚本

2022-06-26 09:55:00

接口自动化项目

2022-06-09 09:27:16

前端行业生存

2022-06-10 09:00:53

前端项目个JSON

2022-06-21 09:26:21

Shell脚本JavaScript

2022-06-07 10:13:22

前端沙箱对象

2022-05-30 10:31:34

Bash脚本Linux

2022-06-15 08:21:49

Linux运维工程师

2022-06-01 14:35:39

gitjmeter脚本

2022-04-18 17:28:14

React前端

2022-05-30 07:36:07

2022-06-28 09:26:25

Python配置文件

2022-05-09 11:19:12

CSS函数开源

2022-06-23 09:22:57

Vue技巧前端

同话题下的热门内容

源码探秘:Python 中对象是如何被调用的?使用Java和Python进行数据统计和分析C++与Java“相爱相杀”:一个步步紧逼,一个节节败退裁员真能拯救中国互联网?吐血推荐17个提升开发效率的“轮子”Flask vs Django: 该如何选择Python框架?哪个版本的JVM最快?编写完10万行代码,我发了篇长文吐槽Rust

编辑推荐

2017年9月编程语言排行榜:Java、C与C++三巨头还能统治排行榜多久?2017年最受欢迎的5个前端框架比较2017年11月编程语言排行榜:脚本语言怎么了?2017年3月编程语言排行榜:Swift首次进入前十最近租房有点烦!技术人如何用Python找到称心如意的“小窝”?
我收藏的内容
点赞
收藏

51CTO技术栈公众号