web自动化测试第15步:使用js语句

news/2024/7/19 13:18:22 标签: selenium, webdriver, js, JavaScript, 自动化

selenium中,有方法可以运行js语句,这样的话对于一些selenium中没有的操作,或者实际编写UI自动化中遇到的疑难杂症,多了另外一个解决思路!!!简直像是打开了新世界的大门一样。比如我编写ui自动化脚本遇到一个问题,除了思考python和selenium中哪些方法可以解决之外,还可以网上搜索或者参考学习下js的api文档,看能否通过js的功能来在实际测试中解决问题。

js本身是很强大的,也就是说我们在使用selenium库中的操作以及方法之外,还可以用另一门专门针对前段的编程语言来辅助我们完成UI自动化脚本,对于脚本编写应该具有很大帮助,由于我本身针对测试的平台难度不高,对于js语言也不太熟悉,所以可以分享的心得不是很多,但分享的点应该会有所帮助。

一、调用运行js语句的方法

首先对于同步和异步请求,由于我调用的js一般不会发生数据请求,所以个人观点觉得两个方法用哪个都无所谓,如果将来要用js传递数据,再考虑是否要同步或者异步传输。

同步请求运行js

driver.execute_script(script, *args)

  • script:要运行的js语句
  • *args:运行js语句时使用的一些参数

异步请求运行js

driver.execute_async_script(script, *args)

  • script:要运行的js语句
  • *args:运行js语句时使用的一些参数

对于同步请求和异步请求的区别:

同步请求指我们发送一个请求后,需要服务端进行返回相应结果后才能进行接下来的操作;

异步请求指我们发送一个请求后,不需要服务端返回响应结果,直接进行接下来的操作(例如AJAX)。

二、示例演示:

对于js的功能,我比较常用的就是改变元素的属性值,经常用于一些隐藏的标签需要操作时,将元素属性改为可见。当然还有其它所了解的一些用法,例如:调整滚动条位置、高亮现实指定元素等,下面我进入实际网页演示下。

<a class=js实例展示" class="has" src="https://img-blog.csdnimg.cn/20190202231321737.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NDR0dBQUc=,size_16,color_FFFFFF,t_70" />

调整滚动条位置:

document.documentElement.scrollTop=9999

高亮显示指定元素:

"arguments[0].setAttribute('style', arguments[1]);",ele, "background: green; border: 2px solid red;"

更改元素属性值:

document.getElementById('s').placeholder='xxx';

或者:

js">"arguments[0].value='谷歌一下'",element
  • element:定位的元素

这里需要注意的是,我们可以通过selenium所定位的元素对象,来传递到js语句中,作为一个js中的一个元素对象来进行操作。

演示代码

from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
driver.get("http://www.runoob.com/js/js-tutorial.html")

# 高亮显示所定位的元素
light_element = driver.find_element_by_id("s")
js_sentence_light = "arguments[0].setAttribute('style', arguments[1]);"
js_sentence_args = "color: yellow; border: 5px solid yellow;"
driver.execute_script(js_sentence_light, light_element, js_sentence_args)
sleep(3)

# 更改页面输入框中的默认文字
js_sentence_style = "document.getElementById('s').placeholder='我改变了搜索输入框默认文字';"
driver.execute_script(js_sentence_style)
sleep(3)

# 改变滚动条位置
js_sentence_position = "document.documentElement.scrollTop=9999"
driver.execute_script(js_sentence_position)
sleep(3)

 

 


http://www.niftyadmin.cn/n/1431732.html

相关文章

web自动化测试第16步:WebDriverWait元素等待和全局设置

由于现在部分web应用加载方式的选择&#xff0c;页面会需要一定时间逐渐加载完毕&#xff0c;也就是说有的页面元素先加载出来&#xff0c;有的元素后加载出来。如果直接定位所查找的元素的话&#xff0c;可能会由于此元素尚未加载完毕找不到元素从而报错&#xff0c;由于网络不…

web自动化测试第17步:深入xpath元素定位详解

一、xpath高级用法基础格式 格式 /轴方法::标签名[标签属性]实例 //div/parent::span[name‘interName’]实例解释&#xff1a; 定位span标签&#xff0c;span标签是div标签的父级&#xff0c;且span标签的name属性值为&#xff1a;interlNmae 二、基础格式详解 2.1层级路径…

web自动化测试第18步:单元测试框架unittest

在了解了ui自动化的方法后&#xff0c;实际应用时需要按照测试用例的形式来书写&#xff0c;否则执行起来太过冗余&#xff0c;这里引入一个测试框架&#xff1a;unittest&#xff0c;使用这个框架中编写用例&#xff0c;会更方便管理和运行。 一、unitest基础写法格式 1.1引…

web自动化测试第19步:使用unittest运行多个测试用例集

上节课&#xff0c;我们开始使用unittest整合测试用例&#xff0c;但是一个项目中&#xff0c;测试用例会有很多&#xff0c;当有很多的测试文件py脚本时&#xff0c;需要一个测试用例集来统一运行&#xff0c;这里就需要使用unittest中的批量运行来跑脚本。 一、常用方法详解…

web自动化测试第20步:测试用例断言

在运行测试用例时&#xff0c;需要判断用例是否执行成功&#xff0c;此时需要有一个我们期望的结果来进行验证。这里unittest中&#xff0c;如果一个case执行的过程中报错&#xff0c;或者我们判断结果不符合期望&#xff0c;就会判定此条用例执行失败&#xff0c;判断的条件主…

web自动化测试第21步:UI自动化框架结构以及思路

在学会使用unittest后&#xff0c;实际上UI自动化的基础骨架已经搭建起来了&#xff0c;剩下的就是利于这套框架&#xff0c;增添一些我们需要的功能&#xff0c;目前看来&#xff0c;我们已经可以使用此框架来批量运行用例&#xff0c;欠缺的是整体的思路以及一些其他功能细节…

web自动化测试第22步:POM设计模式的实现

关于pom设计模式(project Object model/PageObject)&#xff0c;我的理解是一种底层、逻辑、用例的分层&#xff0c;在项目还没有开发出来时&#xff0c;就可以开始写UI自动化脚本了&#xff0c;在开发完成后&#xff0c;再进行元素定位的适配以及调试&#xff1b;而且也可以多…

web自动化测试第23步:数据分离(类变量、yaml、excel)

在ui自动化中&#xff0c;经常会用到数据的存储和读取&#xff0c;这里主要介绍一下如何处理测试中经常用到的数据。 一、类变量 一般习惯把元素定位地址作为类变量存储&#xff0c;因为这样对于调试纠错比较方便&#xff0c;书写调用也较简单。 1.1本类中调用类变量 例如&…