selenium 拓展 JavaScript操作元素对象
JavaScript操作元素对象可以使用DOM操作元素,如果应用有JQuery可以使用JQuery操作元素对象。
selenium运行JavaScript有两种形式,一种是接收JavaScript脚本语言,另一种是将WebElement传入JavaScript中执行脚本。如下:
driver.execute_script("window.open('https://www.qqcom')")
driver.execute_script('arguments[0].scrollIntoViewIfNeeded(true);',element)
1、打开新窗口
DOM操作:
window.open("https://www.qqcom")
2、滚动浏览器滚动条
DOM操作:
document.body.scrollWidth; //网页正文全文宽,包括有滚动条时的未见区域
document.body.scrollHeight; //网页正文全文高,包括有滚动条时的未见区域
document.documentElement.clientWidth; //可见区域宽度,不有滚动条时的未见区域
document.documentElement.clientHeight; //可见区域高度,不有滚动条时的未见区域
document.documentElement.scrollTop=100; //设置或返回匹配元素相对滚动条顶部的偏移
document.documentElement.scrollLeft=100 ; //设置或返回匹配元素相对滚动条左侧的偏移
window.scrollTo(100,400); //设计滚动条left=100,top=400
document.getElementsByClassName("name")[0].scrollIntoViewIfNeeded(true) //滚动到name元素显示
JQuery操作:
JQueryelement.height() 设置或返回匹配元素的高度
JQueryelement.width() 设置或返回匹配元素的宽度
JQueryelement.scrollTop() 设置或返回匹配元素相对滚动条顶部的偏移。
JQueryelement.scrollLeft() 设置或返回匹配元素相对滚动条左侧的偏移。
示例:
$(window).scrollTop(300); //拖动页面距离顶部300像素
$(document).scrollTop(300)
$("html,body").scrollTop(300);
$(window).scrollTop(document.body.scrollHeight); //拖动到底部
$(document).scrollTop($(window).height()); //拖动到底部
3、拖动窗口内元素滚动条
DOM操作:
document.getElementsByClassName("scroll")[0].scrollTop=10000
document.getElementsByClassName("scroll")[0].scrollLeft=10000
JQuery操作:
$("div.id").scrollTop(300);
$("div.id").scrollLeft(300);
4、新增与修改元素属性
DOM操作:
改变属性
document.getElementById('query').value='selenium' // 设置元素值,如果是输入框则输入内容
document.getElementsByClassName("sec-input")[0].disabled=false // 取消置灰
使元素隐藏或可见
document.getElementById("query").style.display="none" // 隐藏
document.getElementById("query").style.display="block" // 可见
JQuery操作:
JQueryelement.attr() 设置或返回匹配元素的属性和值。
$("#query").attr('value','selenium') //设置元素值,如果是输入框则输入内容
$("#query").attr('disabled',false) //取消置灰
$("#query").attr('style','display: none;') // 隐藏
$("#query").attr('style','display: block;') # 可见
5、删除元素属性
DOM操作:移除元素属性
document.getElementById("query").removeAttribute('readonly') // 移除'readonly'属性,是元素可输入
document.getElementById('query').value // 获取value值
JQuery操作:移除元素属性
JQueryelement.removeAttr() 从所有匹配的元素中移除指定的属性。
$("#query").removeAttr('readonly') // 移除'readonly'属性,是元素可输入
6、获取元素的内容
DOM操作:
document.getElementById("query").innerHTML // 获取HTML内容
document.getElementsByClassName('top-nav')[0].innerText // 获取文本内容
document.getElementsByClassName("sec-input")[0].attributes.属性 //获取元素属性
JQuery操作:
JQueryelement.html() 设置或返回匹配的元素集合中的 HTML 内容。
JQueryelement.val() 设置或返回匹配元素的value属性值
JQueryelement.text() 设置或返回匹配元素的内容。
$('.top-nav').html() // 获取HTML
$('.top-nav').text() // 获取text
$('#query').val() //获取val值
7、操作页面元素
DOM操作:
document.getElementById('stb').click() // 单击元素
JQuery操作:
$('#stb').click()
8、传入WebElement元素对象js操作
js=’arguments[0].click()’
driver.execute_script(js,element)
注意:execute_script接收两个参数arguments[0] 表示元素,element为需要传入的元素
示例:搜狗浏览器输入值
element=driver.find_element_by_id('query')
driver.execute_script('arguments[0].value="selenium"',element)
示例:符文框输入带html格式的值
driver.get('http://ueditor.baidu.com/website/onlinedemo.html') # 打开网页