python+selenium十一:jQuery和js语法、js处理iframe
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的更多相关文章
- Python selenium的js扩展实现
python写的数据采集,对一般有规律的页面用 urllib2 + BeautifulSoup + 正则就可以搞定. 但是有些页面的内容是通过js生成,或者通过js跳转的,甚至js中还加入几道混淆机制 ...
- 【Python + Selenium】之JS定位总结
感谢:小琰子 Python+Selenium 脚本中的一些js的用法汇总: 1.滚动条 driver.set_window_size(500,500) js = "window.scroll ...
- jQuery与JS的区别,以及jQuery的基础语法
*在使用jQuery时,要在页面最上端加上 <script src="../jquery-1.11.2.min.js"></script> 看一下js与jQ ...
- python selenium处理JS只读(12306)
12306为例 js = "document.getElementById('train_date').removeAttribute('readonly');" driver.e ...
- python+selenium十五:CSS与Jquery
在css中,id用#表示,class用.表示,要定位标签直接写标签名,其他属性就用[xxx='xxx'] 一.css定位 1.属性定位:可以通过任意属性定位,不局限于id.class.name.tag ...
- 什么是js和js的基本语法
时间:2016年12月15日 先讲讲基础语法: 大部分是来操作表单: js动态效果和数据交互(ajax?) js也有自己的API js大部分的DOM操作都是针对input的. 案例学习,对注册页面的简 ...
- vue.js语法
Vue.js是当下很火的一个JavaScript MVVM(Model-View-ViewModel)库,它是以数据驱动和组件化的思想构建的.相比于Angular.js,Vue.js提供了更加简洁.更 ...
- jQuery的基础跟JS的正则
大家好,我是唯芸星,这是我的一点点学过的知识,呈现给大家 1:正则表达式 包括: 1:正则表达式包括两部分 ①:定义正则表达式的规则 ②:正则表达式的规模(i/g/ ...
- 几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比
AJAX是web2.0的基石,现在网上流行几种开源的AJAX框架,比如:jQuery,Mootools,Dojo,Ext JS等等,那么我们到底在什么情况下该使用那个框架? 让我们来想想选择AJAX框 ...
随机推荐
- Unity触发器有时失效的原因
unity里面的触发器有时候不起作用,我原以为是失效了.其实是这样的,所谓触发器就是被触发的物体,例如你子弹打小怪.如果把子弹设置成触发器那么是不成功的,因为子弹是主动的啊,那么把小怪设置成触发器了呢 ...
- Swift学习笔记8--Optional Chaining
Optional Chaining 自判断链接(Optional Chaining)是一种可以请求和调用属性.方法及子脚本的过程,它的自判断性体现于请求或调用的目标当前可能为空( nil ).如果自 ...
- javascript Date定义和体验
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- JS 将字符串数组用 | 或其他符号分割
var arr = ["吕超","赵云","典韦","关羽","马超","张飞" ...
- 【1】【JUC】JDK1.8源码分析之ReentrantLock
概要: ReentrantLock类内部总共存在Sync.NonfairSync.FairSync三个类,NonfairSync与FairSync类继承自Sync类,Sync类继承自AbstractQ ...
- Codeforces 954 E. Water Taps
http://codeforces.com/problemset/problem/954/E 式子变成Σ xi*(ti-T)=0 sum0表示>=T的ai*ti之和 sum1表示<T的ai ...
- 转--Python标准库之一句话概括
作者原文链接 想掌握Python标准库,读它的官方文档很重要.本文并非此文档的复制版,而是对每一个库的一句话概括以及它的主要函数,由此用什么库心里就会有数了. 文本处理 string: 提供了字符集: ...
- 转--python 黑魔法2
Python 高效编程小技巧 个人博客:临风|刀背藏身 Python 一直被我拿来写算法题,小程序,因为他使用起来太方便了,各种niubi闪闪的技能点也在写算法的过程中逐渐被挖掘到,感谢万能的谷哥度娘 ...
- windows上使用mkdocs搭建静态博客
windows上使用mkdocs搭建静态博客 之前尝试过用HEXO搭建静态博客,最近发现有个叫mkdocs的开源项目也是搭建静态博客的好选择,而且它支持markdown格式,下面简要介绍一下mkdoc ...
- luogu P3960 列队
传送门 因为\(Splay\)可以\(O(logn)\)维护区间,所以直接对每一行维护第一个元素到倒数第二个元素的\(Splay\),最后一列维护一个\(Splay\),每次把选出来的点删掉,然后把那 ...