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();‘      # 点击

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)

# 去掉日期控件的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不一定通用

原文地址:https://www.cnblogs.com/zhongyehai/p/9576327.html

时间: 2024-10-09 01:11:03

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

Python selenium的js扩展实现

python写的数据采集,对一般有规律的页面用 urllib2 + BeautifulSoup + 正则就可以搞定. 但是有些页面的内容是通过js生成,或者通过js跳转的,甚至js中还加入几道混淆机制:对这种涉及页面脚本解析的内容,前面的方式便很无力. 这时我们需要能解析.运行js的引擎——浏览器,而python selenium能提供程序与浏览器的交互接口,再加上phantomjs这个可以后台运行的浏览器,即使用 selenium + phantomjs 便可以解决以上的问题. seleniu

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

*在使用jQuery时,要在页面最上端加上 <script src="../jquery-1.11.2.min.js"></script> 看一下js与jQuery的区别: JS是这样使用的: <script type="text/javascript"> 根据ID取元素,取到的是具体的元素 var a = document.getElementById("p1"); 根据CLASS取 var a = docu

4)jQuery的基础部分和js的部分

1:js: 包含三部分: ESMAScript:基础语法 Array() 索引 .length.push().pop() DOM: 获取DOM的三种方式: (1)Id (2)Class (3)标签获取 TayName BOM: 入口函数: 等待这文档, <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Titl

什么是js和js的基本语法

时间:2016年12月15日 先讲讲基础语法: 大部分是来操作表单: js动态效果和数据交互(ajax?) js也有自己的API js大部分的DOM操作都是针对input的. 案例学习,对注册页面的简单校验,对于空值或者错误的值先弹框,后面再学习在页面上写数据. js是一种脚本语言,轻量级的,可插入到html页面中运行的语言,和java半毛钱的关系都没有. js有三大块内容: ECMAScript java的基础语法 BOM 浏览器对象模型 DOM 文档对象模型 以后jquery用的也很多,但是

$.extend()方法和(function($){...})(jQuery)详解 关于js 的 深入用法。“use strict”

这一次release的内容终于做完了,可以研究一下用到的东西. 以前写js 都是基本的写法, 写个function, 这次看到同事用jquery 加js 写的插件 用了自己不知道的新知识,觉得得有必要学习一下了. 1. "use  strict";   可以在写js 的文件中把这句话放上,不知道是什么意思 ,查了一下,应该是让js写法更严谨,当出现不符合要求的js,系统会报错 看解释给的一个例子  foo = ’aa': 当加了这句话就会报错.  大约就是语法更严谨了. 可以写到fun

js 语法高亮插件之 Prism.js

之前也介绍过几款语法高亮插件<为博客园选择一个小巧霸气的语法高亮插件>以及关于他们的综合性能<再议 语法高亮插件的选择>.今天在小影志博客看到<使用 Prism.js 实现漂亮的代码语法高亮>于是心血来潮去看了下,顺便测试了下性能.打开 Prism.js 官网,看到 Used By..我勒个去,来头不小啊. 然后看了下例子,果然思路不错,非常有意思的一个插件,于是乎我就下载到本地进行 jQuery 高亮渲染测试.测试方法和以前一样,为了和之前的插件对比,当然我的电脑也没

JQuery扩展之CustomBox.js

CustomBox.js, JQuery , 弹出框 概要:最近在Jquery插件的官网看到了一个很好玩的JQuery插件(CustomBox),一个非常偏亮且实用的弹出框.在这里总结一下: 直接上代码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content=&quo

Mongodb中的js语法

定义一个变量 > var len = 10; For循环 这里的db和data都可以作为对象 save是方法 接收一个临时定义的对象 > for(var i = 0; i < len; i++){db.data.save({x:i})}; WriteResult({ "nInserted" : 1 }) > db.data.find(); { "_id" : ObjectId("593177646a6bb0f03293efe1&qu

jquery过滤特殊字符及js字符串转为数字

//替换特殊字符 $(this).val($(this).val().replace(/[~'!<>@#$%^&*()-+_=:]/g, "")); 方法主要有三种 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把值转换成浮点数.只有对String类型调用这些方法,这两个函数才能正确运行:对其他类型返回的都是NaN(Not a Number). 一些示