• Selenium3 + Python3自动化测试系列十——调用JavaScript代码


    调用JavaScript代码

    一、调用JavaScript代码方法

      Selenium在对浏览器操作时会有自动化代码中不稳定的部分,经常出错的部分,可以将这部分对网页元素进行操作的代码换成对应的JavaScript脚本,由于浏览器原生的支持JavaScript,JavaScript代码直接在浏览器内核中执行,就不会出现元素不在所点击的位置等错误,可以大大提高自动化用例执行的稳定性和执行效率。

      调用JavaScript方法有两种:

      1、execute_script():此是同步方法,用它执行js代码会阻塞主线程执行,直到js代码执行完毕。

      execute_script()方法如果有返回值,会有以下几种情况:

      • 返回一个页面元素(document element),这个方法就会返回一个WebElement
      • 返回浮点数数字,这个方法就返回一个double类型的数字
      • 返回非浮点数字,方法返回long类型数字
      • 返回blloean类型,方法返回Boolean类型
      • 返回一个数组,方法发挥一个List类型
      • 其他情况,返回一个字符串

      2、execute_async_script():此是异步方法,它不会阻塞主线程执行。

    二、execute_script()与execute_async_script()区别

      同步执行JavaScript和异步执行JavaScript的区别

        同步执行:driver.execute_script( js)

        如果JavaScript代码的执行时间较短,可以选择同步执行,因为Webdriver会等待同步执行的结果,然后再运行其它的代码。

        异步执行:driver.execute_async_script(js)

        如果JavaScript代码的执行时间较长,可以选择异步执行,因为Webdriver不会等待其执行结果,而是直接执行下面的代码。

    三、举个栗子  

      我们来举个栗子实践一下如何使用,execute_script()调取执行JavaScript代码。调用简单的alert弹框js语句,具体代码如下:

    from selenium.webdriver import Chrome
    from time import sleep
    
    # 打开百度首页
    driver = Chrome("C:Program Files (x86)GoogleChromeApplicationchromedriver.exe")
    driver.get("https://www.baidu.com/")
    
    # 弹出一个alert弹框
    js = "alert('这是一个alert弹框');"
    driver.execute_script(js)
    sleep(2)
    # 关闭弹框
    driver.switch_to.alert.accept()
    sleep(2)
    driver.quit()

      我们再来看一个栗子。我们都知道,用于调整浏览器滚动条位置的JavaScript代码如下:window.scrollTo(0,450);

      window.scrollTo()方法用于设置浏览器窗口滚动条的水平和垂直位置。方法的第一个参数表示水平的左间距,第二个参数表示垂直的上边距。其代码如下:

    from selenium.webdriver import Chrome
    from time import sleep
    
    # 访问百度
    driver = Chrome("C:Program Files (x86)GoogleChromeApplicationchromedriver.exe")
    driver.get("http://www.baidu.com")
    
    # 设置浏览器窗口大小
    driver.set_window_size(500, 500)
    
    # 搜索
    driver.find_element_by_id("kw").send_keys("selenium")
    sleep(2)
    
    # 通过javascript设置浏览器窗口的滚动条位置
    js = "window.scrollTo(100,450);"
    driver.execute_script(js)
    sleep(3)
    
    driver.quit()

      通过浏览器打开百度进行搜索,并且提前通过set_window_size()方法将浏览器窗口设置为固定宽高显示,目的是让窗口出现水平和垂直滚动条。然后通

    过execute_script()方法执行JavaScripts代码来移动滚动条的位置。

      JavaScript在WebDriver中还可以实现很多功能,我们在后期实践过程中再总结

  • 相关阅读:
    2018年产品设计协作领域最强黑马居然是它?
    中小企业网页设计,轻松拓展网络市场
    那些年,UI设计师还在手工标注和切图时走的弯路
    据说,攻城狮也可以像设计狮一样切图了?
    拼图类APP原型模板分享——简拼
    UI设计初学者必看,这款设计神器教你快速入门
    设计交付指南:设计师与开发如何才能好好协作?
    用户体验设计师面试中可能会问及的10个高频问题
    产品,设计和开发,高效协同只差一份文档
    素数
  • 原文地址:https://www.cnblogs.com/wuweiblogs/p/11430136.html
Copyright © 2020-2023  润新知