前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自动化测试中对js的处理

自动化测试中对js的处理

作者头像
无涯WuYa
发布2018-10-25 16:19:43
1.4K0
发布2018-10-25 16:19:43
举报

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)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-07-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.1浏览器底部
  • 1.2浏览器顶部
  • 1.3对视频的控制
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档