selenium 执行jQuery/js语法
driver.execute_script(jQuery/js)

1、jQuery

jQuery只支持css语法:

jquery = '$(CSS).val("XXX");'   # 根据css语法定位到元素,输入内容
jquery = '$(CSS).val('');' # 清空
jquery = '$(CSS).click();' # 点击

# 在某个已经定位的元素上执行 jquery

button = driver.find_element_by_class_name('btn')

driver.execute_script('$(arguments[0]).click()', button)

 

# Jquery控制浏览器内嵌div的滚动条

Jquery = '$(".modal-body").scrollTop(10000)'

driver.execute_script(Jquery)


# Jquery控制浏览器的滚动条

Jquery = '$(document).scrollTop(1000)'

driver.execute_script(Jquery)

 

2、js

1.通过id获取 document.getElementById(“id”)----------获取的是单个

2.通过name获取 document.getElementsByName(“Name”)[0]---------获取的是多个   返回的是list

3.通过标签名选取元素 document.getElementsByTagName(“tag”) --------获取的是多个

4.通过CLASS类选取元素 document.getElementsByClassName(“class”) --------获取的是多个 兼容性:IE8及其以下版本的浏览器未实现getElementsByClassName方法

5.通过CSS选择器选取元素 document.querySelectorAll(“css selector") 兼容性:IE8及其以下版本的浏览器只支持CSS2标准的选择器语法

js = 'document.getElementById(xxx).value="XXXX"'      # 输入值

js = 'document.getElementsByClassName("prefpanelgo")[0].click();'  # 点击

# 去掉元素的readonly属性

js = 'document.getElementById("xxx").removeAttribute("readonly");'

driver.execute_script(js)

# 把元素不可见属性改为可见

js = "document.getElementsByClassName('password')[0].style.display='block'"

driver.execute_script(js)

# 去掉日期控件的readonly属性,并填入日期

js = 'document.getElementById(xxx).removeAttribute("readonly");document.getElementById(xxx).value="20xx-xx-xx"'

driver.execute_script(js)

jquery = '$("#train_date").val("");$("#train_date").val("20xx-xx-xx");$("#query_ticket").click()'

driver.execute_script(jquery)

# 聚焦元素

target = self.find_element(locator)

driver.execute_script("arguments[0].scrollIntoView();", target)

内嵌滚动条:

# 纵向底部

# 获取id是单个元素,因为一个页面上id是唯一的

#js = 'document.getElementById("XXXX").scrollTop=10000'

# 获取的class是多个,取list的第一个对象

# 顶部:scrollTop=0,底部:scrollTop=10000

js0 = 'document.getElementsByClassName("scroll")[0].scrollTop=10000'

driver.execute_script(js0)

# 控制横向滚动条位置

# 最左边:scrollLeft=0,最右边:scrollLeft=10000

js1 = 'document.getElementsByClassName("scroll")[0].scrollLeft=10000'

driver.execute_script(js1)

# js处理iframe

# Js处理iframe无需先切换到iframe上,再切回来操作。 它可以在iframe上和主页面上来回自由操作-----这是Js的强大之处

js = 'document.getElementById("Editor_Edit_EditorBody_ifr").contentWindow.document.body.innerHTML="%s"' % jstext

driver.execute_script(js)

# innerHTML:插入html文本内容

# 以上js写法只是专门处理富文本(有iframe)相关的问题,其它地方遇到iframe不一定通用

python+selenium十一:jQuery和js语法、js处理iframe的更多相关文章

  1. Python selenium的js扩展实现

    python写的数据采集,对一般有规律的页面用 urllib2 + BeautifulSoup + 正则就可以搞定. 但是有些页面的内容是通过js生成,或者通过js跳转的,甚至js中还加入几道混淆机制 ...

  2. 【Python + Selenium】之JS定位总结

    感谢:小琰子 Python+Selenium 脚本中的一些js的用法汇总: 1.滚动条 driver.set_window_size(500,500) js = "window.scroll ...

  3. jQuery与JS的区别,以及jQuery的基础语法

    *在使用jQuery时,要在页面最上端加上 <script src="../jquery-1.11.2.min.js"></script> 看一下js与jQ ...

  4. python selenium处理JS只读(12306)

    12306为例 js = "document.getElementById('train_date').removeAttribute('readonly');" driver.e ...

  5. python+selenium十五:CSS与Jquery

    在css中,id用#表示,class用.表示,要定位标签直接写标签名,其他属性就用[xxx='xxx'] 一.css定位 1.属性定位:可以通过任意属性定位,不局限于id.class.name.tag ...

  6. 什么是js和js的基本语法

    时间:2016年12月15日 先讲讲基础语法: 大部分是来操作表单: js动态效果和数据交互(ajax?) js也有自己的API js大部分的DOM操作都是针对input的. 案例学习,对注册页面的简 ...

  7. vue.js语法

    Vue.js是当下很火的一个JavaScript MVVM(Model-View-ViewModel)库,它是以数据驱动和组件化的思想构建的.相比于Angular.js,Vue.js提供了更加简洁.更 ...

  8. jQuery的基础跟JS的正则

    大家好,我是唯芸星,这是我的一点点学过的知识,呈现给大家                   1:正则表达式 包括: 1:正则表达式包括两部分 ①:定义正则表达式的规则 ②:正则表达式的规模(i/g/ ...

  9. 几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比

    AJAX是web2.0的基石,现在网上流行几种开源的AJAX框架,比如:jQuery,Mootools,Dojo,Ext JS等等,那么我们到底在什么情况下该使用那个框架? 让我们来想想选择AJAX框 ...

随机推荐

  1. shell脚本中判断上一个命令是否执行成功

    shell脚本中判断上一个命令是否执行成功 shell中使用符号“$?”来显示上一条命令执行的返回值,如果为0则代表执行成功,其他表示失败.结合if-else语句实现判断上一个命令是否执行成功. 示例 ...

  2. 网络编程基础【day09】:解决socket粘包之大数据(七)

    本节内容 概述 linux下运行效果 sleep解决粘包 服务端插入交互解决粘包问题 一.概述 刚刚我们在window的操作系统上,很完美的解决了,大数据量的数据传输出现的问题,但是在Linux环境下 ...

  3. IDEA中设置Tab多行显示、打开过多自动关闭的方法

    IDEA中默认Tab是单行显示的,而且默认允许同时打开10个Tab,继续打开Tab会根据规则关闭之前打开的Tab.但是可以通过设置来符合自己的使用习惯. 一.打开Tab过多自动关闭 1.选择File→ ...

  4. Linux之Ubuntu安装Sublime

    0.控制台下开启并使用: 为什么先说这一步呢?确实很尴尬,对不对.但确实,当初就是安装好了都不知道咋个用,就是这么蠢...hahahahahahahha 命令行:subl 注意:不是sub,也不是su ...

  5. UE4的AI学习(2)——官方案例实例分析

    官方给出的AI实例是实现一个跟随着玩家跑的AI,当玩家没有在AI视野里时,它会继续跑到最后看到玩家的地点,等待几秒后如果仍然看不到玩家,则跑回初始地点.官方的案例已经讲得比较详细,对于一些具体的函数调 ...

  6. transform,变换

    1.transform属性:rotate(翻转),skew(倾斜),scale(缩放),translate(移位) 用法:transform: rotate(45deg) scale(0.5) ske ...

  7. django学习~forms

    一 简介 今天咱们来聊聊 django强大的表单功能二 Froms作用   1 自动生成HTML表单元素   2 检查表单数据的合法性   3 如果验证错误,重新显示表单(数据不会重置)   4 数据 ...

  8. 【转】利用URLConnection来发送POST和GET请求

    URL的openConnection()方法将返回一个URLConnection对象,该对象表示应用程序和 URL 之间的通信链接.程序可以通过URLConnection实例向该URL发送请求.读取U ...

  9. 判断网络远端服务器是否断开连接(心跳连接:socket.sendUrgentData)

    1.socket类的方法isClosed().isConnected().isInputStreamShutdown().isOutputStreamShutdown()等,这些方法都是本地端的状态, ...

  10. OGG实现两台Oracle数据库的同步

    今天通过最简单的一个例子,给大家讲解下 goldengate 实现两台Oracle数据库的同步.内容如下:1.配置数据库信息.2.安装golden gate.3.配置golden gate.4.测试同 ...