• 13
  • 13
分享

  前言

  在做Web端自动化中,经常会使用到JS语法来辅助我们定位元素或者来修改元素的一些属性,从而达到自动化用例正常编写,今天安静来介绍下JS通过Selenium在Web端自动化中常用到的场景。

  JavaScript

  在介绍场景时,先介绍下什么是JS,即JavaScript的简写。一种具有函数优先的轻量级,解释型或即时编译型的编程语言。它是作为开发Web页面的脚本语言而出名。

  调用JS元素

  既然JS语法可以在Selenium中进行使用,是通过什么来实现的呢?通过WebDriver中的execute_script()的方法来实现JS语法的操作。

  那么JS元素在Web端自动化中具体的操作场景是什么呢?我们继续往下看。

  定位元素

  对于一些难定位的元素,可以通过JS的方法进行定位,JS提供了几种常用的定位元素方法。

# 通过id属性,获取元素
document.getElementById('id');
# 通过元素name属性,获取元素列表
document.getElementsByName('name');
# 通过标签名,获取元素列表
document.getElementsByTagName('tag_name');
# 通过类名,获取元素列表
document.getElementsByClassName("class_name");
# 通过选择器,获取一个元素
document.querySelector("css selector")

  浏览器操作

  浏览器中输入操作和点击操作用的最多,JS语法也可以对输入框输入内容以及进行点击操作。安静这里拿百度来举例子。

from selenium import webdriver
driver = webdriver.Chrome()
# 打开百度
driver.get('https://www.baidu.com')
# JS语法进行百度输入框输入内容
js = "document.getElementById('kw').value='测试安静'"
# 执行JS语法
driver.execute_script(js)
# 通过JS语法进行点击操作
js2 = 'document.getElementById("su").click()'
# 执行JS语法
driver.execute_script(js2)

  过执行后发现,已经在百度页面搜索到了想要的内容。

1-1.png

  通过JS修改元素属性

  JS语法可以来修改元素的属性值:

from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
# 通过JS修改id属性值
js1 = 'document.getElementById("kw").setAttribute("id","test")'
# 执行JS语言
driver.execute_script(js1)
# 通过修改的id进行定位输入内容
driver.find_element_by_id('test').send_keys('测试安静')

  通过执行后可以看出来,我们已经完成了对百度输入框ID的修改。

1-2.png

  通过JS删除元素属性

  JS语法也可以进行删除页面上的某些元素属性。

  这个可能有的小伙伴们遇到过,安静举个简单的例子,12306网站上的日历输入框,无法输入内容,就是因为readonly这个属性来控制的,我们可以通过删除这个属性,然后自己输入日期时间:

from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.12306.cn/index/')
# 通过JS语法进行删除readonly 属性
js = 'document.getElementById("train_date").removeAttribute("readonly")'
driver.execute_script(js)
# 先清空,再输入
driver.find_element_by_id('train_date').clear()
driver.find_element_by_id('train_date').send_keys('2021-05-01')

  通过下方内容可以看出来,输入框已经可以输入内容了。

1-3.png

  获取元素属性值

  JS语法也可以获取到元素的属性值。通过下图可以看到,将需要返回的属性值进行了返回,但是这里要注意,如果要返回内容, 一定要在JS语法上加上return。

1-4.png

  JS处理滚动条

  在Web页面中元素在页面中央或者最下方需要操作滚动条才能看到元素内容。而Selenium中没有直接操作滚动条,这时候就可以使用JS来进行操作滚动条。

  滚动条到顶部

# JS滚动条到顶部
js="var q=document.documentElement.scrollTop=0"

  设定滚动底部

  这里安静通过设置scrolltop的值来确定滚动条的位置:

# 滚动条到底部,
js="var q=document.documentElement.scrollTop=10000"

  横向滚动条

# 操作横向滚动条
js  = “window.scrollTo(100,400)“

  安静这里通过案例进行展示:

from selenium import webdriver
driver = webdriver.Chrome()
import time
driver.get('http://bbs.51testing.com/forum.php')
# 滚动条到底部
js = "var q=document.documentElement.scrollTop=10000"
# 执行JS脚本
driver.execute_script(js)
time.sleep(1)
# 滚动条在顶部
js1 = "var q=document.documentElement.scrollTop=0"
# 执行JS脚本
driver.execute_script(js1)

  通过执行已经发现,滚动条先滑动了底部,又滑动了顶部。

1-5.png

  总结

  安静这里通过列举了Web端自动中常用到的一些JS操作并通过实例进行了演示。具体场景可以根据公司项目进行设计。

  在上文中也看到了一些JavaScript的语法,感兴趣的小伙伴可以进行学习一波。感谢大家的阅读,希望对您有所帮助。



作者:测试安静   

来源:51Testing软件测试网原创

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 测试用例阶段场景用例覆盖--增加开发对需求的全局理解深度已确认优化需求重点提醒--确保开发和测试对需求的信息同步提供开发自测用例--增加开发自测的认知在测试用例评审阶段,也就是程序开发阶段,用例覆盖率尽可能的全面,能进一步提高开发设计方法或对业务逻辑的理解,减少不必要的缺陷产生。测试阶段测试整体至少分为三轮:测试环境:核心测试,包括ui细节、字段规则、逻辑 校验等。(时间占比:60%)预生产环境:二次进行全流程场景测试(时间占比:30%)上线tag验证:确保代码合并到master后没有问题(时间占比:10%)代码扫描/错误监测:sonar声呐代码扫描工具,检测开发代码一些常规的语法规则错误;b...
            0 0 1456
            分享
          •   欧盟反垄断主管玛格丽特-维斯塔格(Margrethe Vestager)表示,欧盟对苹果公司的App Store及其涉嫌不遵守该地区新法律的行为存在多个问题,并表示在必要时会实施罚款。此前有传言称,欧盟即将对苹果公司开出罚单,指控其继续阻止竞争对手推广替代服务。现在,欧盟竞争事务专员玛格丽特-维斯塔格(Margrethe Vestager)证实,欧盟正在对苹果公司进行调查。  她在CNBC 节目中说:"嗯,我们有一些有关苹果公司的问题,[而且]我觉得这些问题令人惊讶且非常严重。"  "我可以说,这不是我们对这样一家公司的期望,"她继续说道。"...
            0 0 467
            分享
          •   据支付宝官微消息,2024 年 3 月份,境外宾客通过支付宝在国内的累计交易金额同比去年 3 月份增长近 10 倍,交易笔数同比增长近 8 倍,活跃用户数同比增长近 6 倍。  截至 2024 年 3 月,入境后使用支付宝 App 绑定国际银行卡的外国游客来自近 200 个国家和地区;其中,韩国、马来西亚、新加坡、美国、日本、泰国、德国、澳大利亚、英国、印度尼西亚是十大来源国。  据IT之家此前报道,中国人民银行官微近期发布了中英文双语的《外籍来华人员支付指南》(Guide to Payment Services in China),明确外籍来华人员可选择移动支付、银行卡、现金等一系列支付...
            0 0 821
            分享
          •   国产 3A 游戏《黑神话:悟空》正式发售不到 1 小时,即登上 Steam 最热玩游戏榜首,当前玩家人数数量破百万人。  今日上午 10 时,中国首款“3A”游戏《黑神话:悟空》正式上线,包括 PS5 / Steam / WeGame 平台已经预载的玩家现已可正式解锁游玩。该游戏由浙江企业游科互动科技有限公司(以下简称“游科”)出品,此前预售时曾多次登顶全球最大游戏发行平台 Steam 的全球热销榜。  《黑神话:悟空》是以中国神话为背景的动作角色扮演游戏,游戏中玩家将扮演一位“天命人”,为了探寻昔日传说的真相,踏上一条充满危险与惊奇的西游之路。  2024 年 6 月 10 日,《黑神话...
            0 0 372
            分享
          •   美国国家公路交通安全管理局 (NHTSA) 关闭了针对特斯拉车辆的又一项调查,上周该机构刚刚结束了对特斯拉 Autopilot 系统的调查。  本周,NHTSA 宣布关闭一项始于 2020 年 11 月的调查,该调查旨在查明导致汽车倒车时后视摄像头图像显示丢失的触屏故障原因。  该机构于 5 月 2 日正式关闭调查,此前调查范围涵盖了 158,716 辆特斯拉汽车。NHTSA 在 2020 年的文件中描述了最初的问题:“触屏故障会导致倒车时后视摄像头图像显示丢失,从而降低倒车时的后方视野。触屏故障还会影响空调系统 (除雾) 功能以及与 ADAS、Autopilot 系统和转向灯相关的警示音...
            0 0 631
            分享
      • 51testing软件测试圈微信