JavaScript 在 selenium 自動化中的應(yīng)用 ,測試派詳解

JavaScript 相對于 selenium 原生 API 的執(zhí)行速度更快,如果有遇到 selenium 難以處理的操作時,可以采用執(zhí)行 js 代碼去完成。

基本元素定位和操作

driver.get("http://www.baidu.com");Stringjs="var inputEle = document.getElementById('kw'); return inputEle;";WebElementinputEle=(WebElement)jsExecutor.executeScript(js);System.out.println(inputEle.getAttribute("maxlength"));driver.executeScript("document.getElementById('kw').value='軟件測試工程師的心靈社區(qū)';");

DOM 操作

移除 readonly 屬性

當(dāng)輸入框使用的是選擇控件且為只讀狀態(tài)時,selenium 原生 API 無法操作控件,可以通過 js 移除readonly屬性。比如 12306 網(wǎng)站的日期選擇框。

driver.get("https://www.12306.cn/index/");Stringjs="document.getElementById('train_date').removeAttribute('readonly')";driver.executeScript(js);Thread.sleep(2000);driver.findElement(By.id("train_date")).sendKeys(Keys.CONTROL,"a");//清空Thread.sleep(2000);driver.findElement(By.id("train_date")).sendKeys(Keys.BACK_SPACE);//清空driver.findElement(By.id("train_date")).sendKeys("2019-03-30");//輸入

移除超鏈接的 target 屬性

當(dāng)超鏈接有target="_blank"屬性時,點擊超鏈接會打開第新的標(biāo)簽頁,如果不想進行多窗口切換操作,可以通過 js 去除target屬性

//<a target="_blank">手機版</a>Stringjs="document.getElementById('xxx').removeAttribute('target')";driver.executeScript(js);

窗口滾動

driver.get("https://ke.qq.com/?tuin=68973267");//0:滾動到最頂端driver.executeScript("window.scrollTo(0,0)");//1:滾動到最底部driver.executeScript("window.scroll(0,document.body.scrollHeight)");//2:滾動到指定的位置driver.executeScript("window.scrollTo(0,500)");//3:滾動到指定元素WebElementtxy=driver.findElement(By.partialLinkText("騰訊云"));driver.executeScript("arguments[0].scrollIntoView();",txy);

注入 jQuery

如果我們想在沒有引入 jquery.js 的頁面也能使用 jQuery 進行操作,可以動態(tài)注入的方式、運行如下腳本注入 jquery.js。

StringBufferstr=newStringBuffer();//創(chuàng)建一個script標(biāo)簽str.append("var hm = document.createElement('script');");//設(shè)置js文件路徑str.append("hm.src = 'http://libs.baidu.com/jquery/2.0.0/jquery.min.js';");//獲得head標(biāo)簽str.append("var headEle = document.getElementsByTagName('head')[0]; ");//將script標(biāo)簽添加到head標(biāo)簽str.append("headEle.appendChild(hm);");//執(zhí)行JavaScript完成jquery.js的注入driver.executeScript(str.toString());

作者:happy

鏈接:http://testingpai.com/article/1601091953996

來源:測試派

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容