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

看下效果,我们已经对滚动条从上拉动到下,然后再次拉上来。

posted on 2017-06-15 17:48  梦雨情殇  阅读(3013)  评论(0编辑  收藏  举报

导航