使用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()
看下效果,我們已經對滾動條從上拉動到下,然后再次拉上來。

