python自动化使用js_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 importChromefrom time importsleep#打开百度首页

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

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

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

from selenium.webdriver importChromefrom time importsleep#访问百度

driver = Chrome("C:\Program Files (x86)\Google\Chrome\Application\chromedriver.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中还可以实现很多功能,我们在后期实践过程中再总结

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值