川石教育
全国咨询热线:136-9172-9932
  1. 首页 > 资讯与干货 > IT资讯

JavaScript 在 selenium 自动化中的应用

作者:川石学院 日期:2022-06-10 17:46:58 点击数:

一天一个关于测试知识点,5分钟内讲解你最关心的软件测试问题,今天就接着来谈谈关于软件测试中的“JavaScript 在 selenium 自动化中的应用”。

JavaScript 在 selenium 自动化中的应用(图1)

  JavaScript 相对于 selenium 原生 API 的执行速度更快,如果有遇到 selenium 难以处理的操作时,可以采用执行 js 代码去完成。

  基本元素定位和操作

  driver.get("http://www.baidu.com");String js = "var inputEle = document.getElementById('kw'); return inputEle;";WebElement inputEle = (WebElement) jsExecutor.executeScript(js);System.out.println(inputEle.getAttribute("maxlength"));driver.executeScript("document.getElementById('kw').value='软件测试工程师的心灵社区';");

  DOM 操作

  移除 readonly 属性

  当输入框使用的是选择控件且为只读状态时,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 属性

  //手机版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 进行操作,可以动态注入的方式、运行如下脚本注入 jquery.js。

  StringBuffer str = new StringBuffer();//创建一个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);");//执行JavaScript完成jquery.js的注入driver.executeScript(str.toString());


相关文章
  • 亚马逊运营成功转行软件测试,薪资13K表示很满意!2022-06-10 17:46:58
  • 西安川石的兰朋友喊你来当他的学弟学妹啦!2022-06-10 17:46:58
  • 国外的月亮也不一定比国内测试猿的年薪美~2022-06-10 17:46:58
  • 建筑工程专业朱同学成功转行为软件测试人!2022-06-10 17:46:58
  • 财务管理专业转行软件测试月薪甩会计几条街!2022-06-10 17:46:58
  • 只有技术沉淀才能成功上岸,深圳就业薪资13K!2022-06-10 17:46:58
  • 薪资11K!实现自我价值,从掌握一门IT技术开始...2022-06-10 17:46:58
  • 文科生转行软件测试照样拿下高薪15K!2022-06-10 17:46:58
  • 恭喜罗同学喜提19.5K,成功入行软件测试!2022-06-10 17:46:58
  • 毕业1年,迷茫的他最终选择转行软件测试2022-06-10 17:46:58