码迷,mamicode.com
首页 > 编程语言 > 详细

python+selenium十一:jQuery和js语法、js处理iframe

时间:2018-09-03 02:45:54      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:into   read   inner   清空   通用   富文本   scrolltop   Edito   支持   

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不一定通用

python+selenium十一:jQuery和js语法、js处理iframe

标签:into   read   inner   清空   通用   富文本   scrolltop   Edito   支持   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!