python selenium-webdriver 执行js (八)
使用python selenium 做自动化测试的时候其实我基本没有使用过执行js,只是在后来使用selenium来爬虫的时候使用到了,所以我在这里也就拿出来简单的介绍一下如何执行js。
- execute_script 方法定义:
- 因为比较简单所以我就不会太特别的细致介绍,所以我们看一个简单的例子
#-*- coding:utf-8 -*- from selenium import webdriver import time driver = webdriver.Chrome() js = 'alert("我是一个消息框!")' #这里我定义一个js alert 弹出框 driver.execute_script(js) #这里执行下上面的js,很简单把定义好的js直接传入即可。 time.sleep(3) driver.switch_to_alert().accept() #之前我们学习过如何处理alert对话框,所以学以致用,这里利用他在处理一下 time.sleep(2) driver.quit()
重点来啦!!!
这里我们讲一个实际的应用,通过操作js来控制滚动条,滚动条的操作就是依靠了js。
#-*- coding:utf-8 -*- '''由于浏览器的兼容性,所以我这边增加了判断,Chrome比较特殊''' # 滚动到底部 def Execute_Js_Scroll_Top(): if driver.name == "chrome": #获取浏览器名称 js = "var q=document.body.scrollTop=0" else: js = "var q=document.documentElement.scrollTop=0" return driver.execute_script(js) # 滚动底部 def Execute_Js_scroll_Foot(): if driver.name == "chrome": #获取浏览器名称 js = "var q=document.body.scrollTop=10000" else: js = "var q=document.documentElement.scrollTop=10000" return driver.execute_script(js) #----------------演示滚动操作---------------------- import time from selenium import webdriver from selenium.webdriver.common.keys import Keys driver = webdriver.Chrome() driver.maximize_window() driver.get("http://cn.bing.com") driver.find_element_by_id('sb_form_q').send_keys('selenium') driver.find_element_by_id('sb_form_go').send_keys(Keys.ENTER) time.sleep(2) #观察效果 Execute_Js_scroll_Foot() #首先我们滚动到底部 time.sleep(2) #观察效果 Execute_Js_Scroll_Top() #再次滚动到顶部 time.sleep(2) #观察效果 driver.quit()
看下效果,我们已经对滚动条从上拉动到下,然后再次拉上来。