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)\Google\Chrome\Application\chromedriver.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()

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zydyzp.html