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
來源:測試派