自動化測試中對js的處理

1 js的處理

在自動化測試中,某些問題無法解決,我們可以執行javascript代碼通過seleniumwebdriver的使用方法來解決我們遇到的問題,如瀏覽器顯示的內容很多,但是要定位底部或者頂部的,就得控制瀏覽器滾動條來實現,webdriver可以通過execute_script()來調用js來實現。WebDriver類提供了下列方法來執行Javascript代碼:

方法

描述

Example

Execute_async_script(script)

執行javascript在當前的窗框

Driver.execute_async_script("return document.title")

Execute_script(script)

同步執行javascript早當前的窗框

Driver.execute_script("return document.title")

1.1瀏覽器底部

某些時候,由於頁面顯示的數據比較多,是已瀑布流的形式顯示,但是我們需要點擊底部的對象,我們就需要把鼠標移動到底部,纔可以點擊對象,如在百度首頁輸入搜索關鍵字,點擊搜索後,然後瀏覽器鼠標移動到底部,見如下實現這樣一個效果的測試代碼:

#coding:utf-8

fromselenium import webdriver

fromselenium.webdriver.common.by import By

fromselenium.webdriver.support.ui import WebDriverWait

fromselenium.webdriver.support import expected_conditions

fromselenium.webdriver.common.action_chains import ActionChains

fromselenium.webdriver.common.keys import Keys

importunittest

fromtime import sleep

classdemoTest(unittest.TestCase):

def setUp(self):

self.driver=webdriver.Firefox()

self.driver.maximize_window()

self.driver.implicitly_wait(30)

self.driver.get('http://www.baidu.com')

def testDemo(self):

self.driver.find_element_by_id('kw').send_keys('webdriver')

self.driver.find_element_by_id('su').click()

js="varq=document.documentElement.scrollTop=10000"

self.driver.execute_script(js)

sleep(3)

def tearDown(self):

self.driver.quit()

if__name__=='__main__':

unittest.main(verbosity=2)

1.2瀏覽器頂部

移動鼠標到瀏覽器底部和頂部,一個是瀏覽器的最底部,一個是瀏覽器的top,瀏覽器到頂部,任然已百度搜索爲實例,先移動到底部嗎,再移動到頂部。見如下的測試代碼:

#coding:utf-8

fromselenium import webdriver

fromselenium.webdriver.common.by import By

fromselenium.webdriver.support.ui import WebDriverWait

fromselenium.webdriver.support import expected_conditions

fromselenium.webdriver.common.action_chains import ActionChains

fromselenium.webdriver.common.keys import Keys

importunittest

fromtime import sleep

classdemoTest(unittest.TestCase):

def setUp(self):

self.driver=webdriver.Firefox()

self.driver.maximize_window()

self.driver.implicitly_wait(30)

self.driver.get('http://www.baidu.com')

def testDemo(self):

self.driver.find_element_by_id('kw').send_keys('webdriver')

self.driver.find_element_by_id('su').click()

#瀏覽器移動到底部

js="varq=document.documentElement.scrollTop=10000"

self.driver.execute_script(js)

sleep(3)

#鼠標移動瀏覽器到頂部

js1="varq=document.documentElement.scrollTop=0"

self.driver.execute_script(js1)

sleep(3)

def tearDown(self):

self.driver.quit()

if__name__=='__main__':

unittest.main(verbosity=2)

1.3對視頻的控制

在視頻網站中,怎麼可以實現對視頻進行自動化的控制播放和暫停了?我們可以利用html5中的video元素來實現,<video>標籤是定義視頻,比如電影片或者其他視頻流。對於自動化的控制視頻的播放,暫停,我們通過獲取<video>元素,獲取到它的ID,然後獲取視頻的播放源進行確認,最後通過js控制視頻的播放,暫停。我們已http://www.videojs.com/爲實例說明,打開鏈接地址後,就會看到一個視頻,我們看視頻的源碼,源碼見如下:

<video id="home_video_html5_api" class="vjs-tech" poster="/img/poster.jpg" preload="none">

<source type="video/mp4" src="http://vjs.zencdn.net/v/oceans.mp4"></source>

<source type="video/webm" src="http://vjs.zencdn.net/v/oceans.webm"></source>

</video>

依據如上的html代碼,我們可以得到<video>的id="home_video_html5_api",如下測試代碼演示了實現對視頻自動化的控制播放和暫停,見代碼:

#coding:utf-8

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support importexpected_conditions

from selenium.webdriver.common.action_chains importActionChains

from selenium.webdriver.common.keys import Keys

import unittest

from time import sleep

class demoTest(unittest.TestCase):

def setUp(self):

self.driver=webdriver.Firefox()

self.driver.maximize_window()

self.driver.implicitly_wait(30)

self.driver.get('http://www.videojs.com/')

deftestDemo(self):

video=self.driver.find_element_by_id('home_video_html5_api')

#視頻源

js="returnarguments[0].currentSrc"

self.driver.execute_script(js,video)

#視頻的播放

self.driver.execute_script("returnarguments[0].play()",video)

sleep(10)

#視頻的暫停

self.driver.execute_script("arguments[0].pause()",video)

sleep(10)

deftearDown(self):

self.driver.quit()

if __name__=='__main__':

unittest.main(verbosity=2)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章