js 异步执行_selenium 执行 js 代码的两个方法

3c317b292eba1b06d74dfef69a119f7f.png

在使用selenium做web自动化的时候,很多小伙伴反馈有些页面上动作我们无法通过selenium封装的方法直接去做。

比如说修改元素的属性,影子节点的操作等等。需要使用原生的js代码去实现,而selenium也给我提供了两个执行js代码的方法。

一个是execute_script,另一个是execute_async_script。

很多小伙伴不太清楚这两个方法有什么区别。那么今天就来和大家聊聊这两个方法的区别以及使用。

execute_script方法

execute_script这个方法应该是大家用的比较多的,接下来我们来看一下这个方法的源码,源码参考如下:

55b4bed8643ded2e07c40a76fd6b02df.png

通过源码的中的使用案例我们可以看到这个方法使用起来是比较简单的,通过script执行传入js代码即可

那么这个方法还有一个不定长参数args,这个参数可以用来传递一些在执行js代码的时候需要的一些参数

比如通过js去操作某个元素,我们可以将定位到的元素传进去,下面我们通过一个案例来看一下:

案例:12306日期修改

打开12306首页大家可以去试一下,图中的日期输入框是不能够直接通过输入修改日期的

原因是input元素有一个readonly属性(只读属性),要修改日期则需要把readonly这个属性设为false

而selenium中没有直接的方法可以修改元素的属性,只有通过js才能做的,那么接下来我们就使用execute_script方法来执行对应的js代码。

526fb04924968c8c61befbe05efce6bc.png

代码如下:

6b9f3b152e0927078de48d63673c4f88.png

那么关于execute_script这个方法的使用我们就先聊到这里,接下来我们来看看另一个方法,

execute_async_script方法

关于execute_async_script这个方法,我们依然先来看看这个方法的源码,源码参考如下:

b43766d8246ef7ec2d7006331972b467.png


通过源码的注释中我们可以看到,这是一个异步执行js代码的方法

注意:这边的异步执行并不是python中异步执行,而是js代码执行是异步执行的

( 关于js异步这边不做过多的扩展,大家可以自行扩展学习)

我们来看一下这个方法怎么使用。首先看源码中的使用示例,我们一起来分析一下

d3aea5c83e7a61376898057ee319883a.png

那么接下来我们还是通过12306这个案例来演示,异步js代码的执行:

案例代码:

f63ac3d746d0b4a01b1583f97f08b2bc.png

04a3dabf6849b1a2ea7930f5392cb950.png

效果图如下:

4ecb0ce1383b04a7de7dc2a41a8ab165.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值