Web自动化测试:使用js语句

    技术2022-07-13  74

    在selenium中,有方法可以运行js语句,这样的话对于一些selenium中没有的操作,或者实际编写UI自动化中遇到的疑难杂症,多了另外一个解决思路!简直像是打开了新世界的大门一样。js本身是很强大的,也就是说我们在使用selenium库中的操作以及方法之外,还可以用另一门专门针对前段的编程语言来辅助我们完成UI自动化脚本,对于脚本编写应该具有很大帮助。

    调用运行js语句的方法 同步请求运行js

    driver.execute_script(script, *args)

    script:要运行的js语句

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

    异步请求运行js

    driver.execute_async_script(script, *args)

    script:要运行的js语句

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

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

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

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

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

    整滚动条位置:

    document.documentElement.scrollTop=9999

    高亮显示指定元素:

    “arguments[0].setAttribute(‘style’, arguments[1]);”,ele, “background: green; border: 2px solid red;”

    更改元素属性值:

    document.getElementById(‘s’).placeholder=‘xxx’;

    或者:

    “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)

    Processed: 0.009, SQL: 9