JavaScript 在 selenium 自動化中的應用
2020-09-28 17:33 作者:軟件測試檸檬班Pro | 我要投稿

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

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

driver.get("https://www.12306.cn/index/");String js = "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 屬性
當超鏈接有 target="_blank"
屬性時,點擊超鏈接會打開第新的標簽頁,如果不想進行多窗口切換操作,可以通過 js 去除 target
屬性

//<a href="https://app.mail.qq.com/" target="_blank">手機版</a>String js = "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:滾動到指定元素WebElement txy = driver.findElement(By.partialLinkText("騰訊云"));driver.executeScript("arguments[0].scrollIntoView();",txy);
注入 jQuery
如果我們想在沒有引入 jquery.js 的頁面也能使用 jQuery 進行操作,可以動態(tài)注入的方式、運行如下腳本注入 jquery.js。

StringBuffer str = new StringBuffer();//創(chuàng)建一個script標簽str.append("var hm = document.createElement('script');");//設置js文件路徑str.append("hm.src = 'http://libs.baidu.com/jquery/2.0.0/jquery.min.js';");//獲得head標簽str.append("var headEle = document.getElementsByTagName('head')[0]; ");//將script標簽添加到head標簽str.append("headEle.appendChild(hm);");//執(zhí)行JavaScript完成jquery.js的注入driver.executeScript(str.toString());
聲明:本文作者為檸檬班happy老師,轉載請注明出處!
標簽: