當(dāng)前位置:
首頁(yè) >
前端技术
> javascript
>内容正文
javascript
自动化操作——JS
一、概念
webdriver通過(guò)執(zhí)行javascript語(yǔ)句,操作頁(yè)面。webdriver執(zhí)行js有兩種方式同步與異步,execute_script(),execute_async_script(),前者影響后續(xù)的代碼順序,即必須等js執(zhí)行完成才可以繼續(xù),后者反之。
在selenium自動(dòng)化中調(diào)用js方式,注:也可以使用JQ語(yǔ)法進(jìn)行操作:
driver.execute_script("js_code") #用于直接操作result=driver.execute_script("return js_code") #獲取js返回值driver.execute_script("arguments[0].scrollIntoView(true);", element); #入?yún)蓚€(gè)參數(shù),前者是js代碼,后者是元素對(duì)象二、語(yǔ)法
1、定位
document.getElementById //根據(jù)ID查找元素,大小寫(xiě)敏感,如果有多個(gè)結(jié)果,只返回第一個(gè);document.getElementsByClassName //根據(jù)類(lèi)名查找元素,多個(gè)類(lèi)名用空格分隔,返回一個(gè) HTMLCollection //另外,不僅僅是document,其它元素也支持getElementsByClassName 方法;document.getElementsByTagName //根據(jù)標(biāo)簽查找元素, * 表示查詢所有標(biāo)簽,返回一個(gè) HTMLCollection 。document.getElementsByName //根據(jù)元素的name屬性查找,返回一個(gè) NodeList 。document.querySelector //返回單個(gè)Node,IE8+(含),如果匹配到多個(gè)結(jié)果,只返回第一個(gè)。document.querySelectorAll //返回一個(gè) NodeList ,IE8+(含)。document.forms //獲取當(dāng)前頁(yè)面所有form,返回一個(gè) HTMLCollection ;2、獲取界面信息
document.body.scrollWidth; //獲取完整網(wǎng)頁(yè)正文全文寬,包括有滾動(dòng)條時(shí)的未見(jiàn)區(qū)域document.body.scrollHeight; //獲取完整網(wǎng)頁(yè)正文全文高,包括有滾動(dòng)條時(shí)的未見(jiàn)區(qū)域
document.documentElement.clientWidth; //僅獲取可見(jiàn)區(qū)域?qū)挾?#xff0c;不有滾動(dòng)條時(shí)的未見(jiàn)區(qū)域
document.documentElement.clientHeight; //僅獲取可見(jiàn)區(qū)域高度,不有滾動(dòng)條時(shí)的未見(jiàn)區(qū)域
?
document.documentElement.scrollTop=100; //設(shè)置或返回匹配元素相對(duì)滾動(dòng)條頂部的偏移,即獲取網(wǎng)頁(yè)被卷去的高度
document.documentElement.scrollLeft=100 ; //設(shè)置或返回匹配元素相對(duì)滾動(dòng)條左側(cè)的偏移 ,即獲取網(wǎng)頁(yè)被卷去的左部分
document.documentElement.offsetTop; //獲取對(duì)象相對(duì)于由offsetParent屬性指定的父坐標(biāo)(css定位的元素或body元素)距離頂端的????????????????????????????????????????????? ?
?????????????????????????????????????????? //高度
document.documentElement.offsetLeft; //獲取對(duì)象相對(duì)于由offsetParent屬性指定的父坐標(biāo)(css定位的元素或body元素)的高度IE、
?????????????????????????????????????????? //Opera 認(rèn)為offsetHeight = clientHeight + 滾動(dòng)條 + 邊框。FF 認(rèn)為offsetHeight
?????????????????????????????????????????? //是網(wǎng)頁(yè)內(nèi)容實(shí)際高度,可以小于 clientHeight。offsetHeight在新版本的FF和IE中是一樣的???????????????????????????????? ?
?????????????????????????????????????????? //表示網(wǎng)頁(yè)的高度,與滾動(dòng)條無(wú)關(guān),chrome中不包括滾動(dòng)條。
//詳見(jiàn) https://blog.csdn.net/w390058785/article/details/80461845
window.screen.height;? //屏幕分辨率的高
window.screen.width;?? //屏幕分辨率的寬
document.documentElement.style;? //獲取行內(nèi)式標(biāo)簽style屬性,html 標(biāo)簽上直接寫(xiě)
??????????????????????????????????????? //<input style='color:red;' > 這樣才可以取到
document.documentElement.getComputedStyle()? //獲取對(duì)象css屬性
//詳見(jiàn) https://www.cnblogs.com/xiyangbaixue/p/4001531.html
3、操作界面元素
window.scrollTo(100,400); //滾動(dòng)位置left=100,top=400document.getElementsByClassName("name")[0].scrollIntoViewIfNeeded(true) //滾動(dòng)到name元素顯示document.getElementById(“id”).value="你想設(shè)置的文字" //給元素設(shè)置文本值document.getElementsByClassName("name")[0].scrollIntoViewIfNeeded(true) //滾動(dòng)到name頁(yè)面居中顯示document.getElementsByClassName("comment-content")[0].scrollIntoView() //滾動(dòng)到name頁(yè)面頂上顯示document.getElementById("query").style.display="none" // 隱藏document.getElementById("query").style.display="block" // 可見(jiàn)document.getElementsByClassName("sec-input")[0].disabled=false // 取消置灰document.getElementById("query").removeAttribute('readonly') // 移除'readonly'屬性,是元素可輸入document.getElementById("query").innerHTML // 獲取HTML內(nèi)容document.getElementsByClassName('top-nav')[0].innerText // 獲取文本內(nèi)容document.getElementsByClassName("sec-input")[0].attributes.屬性 //獲取元素屬性//滾動(dòng)條拖動(dòng)到元素位置element=driver.find_element_by_id('auto')driver.execute_script('arguments[0].scrollIntoViewIfNeeded(true);',element)?
總結(jié)
- 上一篇: 各浏览器内核与C#WinForm开发De
- 下一篇: 国家电网网络运营属于什么职业类型?