用phantomjs进行web界面自动化测试的几个注意点
貌似我以前说过不少界面自动化测试的坏话,哈哈。最近接触了phantomjs,发现用它进行web界面测试也挺有意思的,下面举几个我使用过程中发现的注意点。
1、需要指定phantomjs位置,否则使用时会报错
driver = webdriver.PhantomJS(executable_path=r'D:\phantomjs-2.1.1-windows\bin\phantomjs.exe')#在windows中使用phatomjs,需要在这里指定可执行文件的位置,或者修改系统宏也行
2、需要指定虚拟窗口的分辨率,否则截图时可能会报错:Element is not currently visible and may not be manipulated exception。详细讨论看:https://github.com/ariya/phantomjs/issues/11637
driver.set_window_size(1024, 768)
3、需要修改源码service.py的send_remote_shutdown_command,否则driver.quit() 时会报错。详细讨论看:http://stackoverflow.com/questions/36153007/permission-error-if-to-use-phantomjs
def send_remote_shutdown_command(self):
try:
if self._cookie_temp_file:
os.remove(self._cookie_temp_file)
except Exception,info:
pass
4、有时候定位失败可能是因为网页还未加载完,可以加个sleep或者WebDriverWait试试
无论是web还是gui,界面测试最重要的就是定位控件,再进行操作。phantomjs提供的定位控件方法如下:
def find_element_by_id(self, id_):
def find_element_by_xpath(self, xpath):
def find_element_by_link_text(self, link_text):
def find_element_by_partial_link_text(self, link_text):
def find_element_by_name(self, name):
def find_element_by_tag_name(self, name):
def find_element_by_class_name(self, name):
def find_element_by_css_selector(self, css_selector):
还有一类是find_elements的,含义和上面的相同,只不过是寻找出目标网页中具有相同条件的一批控件罢了,这样就可以同时对多个控件进行同样的操作了。
说到操作,定位控件之后,接着就是对控件进行操作,常见的控件操作如下:
.click 点击
.send_keys 按键输入
.text 获取控件的文本
.get_attribute 获得控件指定的属性值
使用phantomjs时最好结合chrome的f12(dev_tool),这样对于不懂html的同学(如我)来说事半功倍。
最后,再举几个phantomjs的简单使用例子:
url = r'https://www.so.com/'
driver.get(url)
input_by_id = driver.find_element_by_id('input')
input_by_id.send_keys(u'测试find_element_by_id')
button_by_id = driver.find_element_by_id('search-button')
button_by_id.click()
time.sleep(1)
driver.save_screenshot('byid.png') url = r'https://www.so.com/'
driver.get(url)
input_by_name = driver.find_element_by_name('q')
input_by_name.send_keys(u'测试find_element_by_name')
button_by_class_name = driver.find_element_by_class_name('skin-search-button')
button_by_class_name.click()
time.sleep(1)
driver.save_screenshot('byname.png') url = r'https://www.so.com/'
driver.get(url)
input_by_class_name= driver.find_element_by_class_name('placeholder')
input_by_class_name.send_keys(u'测试find_element_by_class_name')
button_by_class_name = driver.find_element_by_class_name('skin-search-button')
button_by_class_name.click()
time.sleep(1)
driver.save_screenshot('byclassname.png') url = r'https://www.so.com/'
driver.get(url)
button_by_link_text = driver.find_element_by_link_text('问答')
button_by_link_text.click()
time.sleep(1)
driver.save_screenshot('bylinktext.png') url = r'https://www.so.com/'
driver.get(url)
button_by_partial_link_text = driver.find_element_by_partial_link_text('问')
button_by_partial_link_text.click()
time.sleep(1)
driver.save_screenshot('bypartiallinktext.png') url = r'https://www.so.com/'
driver.get(url)
input_by_xpath = driver.find_element_by_xpath('//*[@id="input"]')
input_by_xpath.send_keys(u'测试find_element_by_xpath')
button_by_id = driver.find_element_by_id('search-button')
button_by_id.click()
time.sleep(1)
driver.save_screenshot('byxpath.png') url = r'https://www.so.com/'
driver.get(url)
input_by_css_selector = driver.find_element_by_css_selector('#input')
input_by_css_selector.send_keys(u'测试find_element_by_css_selector')
button_by_id = driver.find_element_by_id('search-button')
button_by_id.click()
time.sleep(1)
driver.save_screenshot('bycssselector.png') url = r'https://www.so.com/'
driver.get(url)
input_by_tag_name = driver.find_elements_by_tag_name('input')#tag表示标签,当网页存在同标签名的控件时,一般用for进行定位比较好
for a in input_by_tag_name:
if a.get_attribute('type') == 'text':
a.send_keys(u'测试find_element_by_tag_name')
button_by_tag_name= driver.find_element_by_id('search-button')
button_by_tag_name.click()
time.sleep(1)
driver.save_screenshot('bytagname.png')
用phantomjs进行web界面自动化测试的几个注意点的更多相关文章
- Robot Framework与Web界面自动化测试学习笔记:简单例子
假设环境已经搭建好了.这里用RIDE( Robot Framework Test Data Editor)工具来编写用例.下面我们对Robot Framework简称rf. 我们先考虑下一个最基本的登 ...
- Robot Framework与Web界面自动化测试:简单例子
假设环境已经搭建好了.这里用RIDE( Robot Framework Test Data Editor)工具来编写用例.下面我们对Robot Framework简称rf. 我们先考虑下一个最基本的登 ...
- 使用PhantomJS后台web界面截图
自动化截web页面的图 一.工具介绍: PhantomJS是一个基于webkit的JavaScript API.它使用QtWebKit作为它核心浏览器的功能,使用webkit来编译解释执行JavaSc ...
- Robot Framework与Web界面自动化测试学习笔记:利用xpath定位元素
在rf中,利用selinum2的关键字进行用例编写时,很多关键字的参数是html元素的定位标识. 最简单的方式,是通过id 或name来描述元素定位信息,如 click button id=l ...
- Robot Framework与Web界面自动化测试学习笔记:如何判断单选框的选中状态
单选按钮是个常见的html元素,在网页中往往提供一组单选按钮来做选项. 这样在自动化测试用例中需要判断当前选中的按钮是否与预期的一直. 可以这样来操作: ${value} Get Element ...
- Robot Framework与Web界面自动化测试学习笔记:定位到新窗口
在页面操作中,有时会需要打开新的窗口(新的网页不在当前窗口显示,而是在新的tab页显示), 比如利用 window.open("newurl") 或者 <a href=& ...
- 使用phantomjs进行无界面UI自动化测试
PhantomJS(http://phantomjs.org/) 是一个基于WebKit的服务器端JavaScript API.它全面支持web而不需浏览器支持,其快速.原生支持各种Web标准:DOM ...
- Robot Framework使用Phantomjs进行无界面UI自动化测试
Robot Framework 是一款关键字驱动的验收自动化测试框架,现在在国内使用的越来越广泛了.一种通用的Web UI自动化测试解决方案是Robot Framework+Selenium2Libr ...
- 转载 基于Selenium WebDriver的Web应用自动化测试
转载原地址: https://www.ibm.com/developerworks/cn/web/1306_chenlei_webdriver/ 对于 Web 应用,软件测试人员在日常的测试工作中, ...
随机推荐
- oo第二次总结
第五次作业 度量分析 因为第五次作业是在第三次作业的基础上改的,所以出现了与第三次作业一样的问题,即圈复杂度超标和嵌套现象严重.同时,由于对多线程的不熟悉,将一些功能集中的放入了一个类里,这也是McC ...
- Ultimate Facebook Messenger for Business Guide (Feb 2019)
Ultimate Facebook Messenger for Business Guide (Updated: Feb 2019) By Iaroslav Kudritskiy November 2 ...
- Java学习--抽象类和接口
https://www.cnblogs.com/dolphin0520/p/3811437.html 抽象类 先了解一下[抽象方法]—一种特殊的方法,只有声明,没有具体的实现 abstract vo ...
- Windows下Git Bash中VIM打开文件中文乱码
Windows下Git Bash中VIM打开文件中文乱码,解决方法是: 步骤一 admin@DESKTOP-O99620V MINGW64 /d/项目GGE/Hard_for_GGE (master) ...
- OFFICE 您正试图运行的函数包含有宏或需要宏语言支持的内容。
故障现象:打开WORD的时候,提示“您正试图运行的函数包含有宏或需要宏语言支持的内容.而在安装此软件时,您(或您的管理员)选择了不安装宏或控件的支持功能”. 提示现象: 解决办法 : 1.进入“控制面 ...
- shell脚本报错:syntax error: unexpected end of file
解决办法1: vi test.sh :set fileformat=unix :wq 解决办法2: yum install dos2unix dos2unix my.sh 原因剖析: DOS下文件和L ...
- git merge后如何撤销
merge后发现冲突太多,或者合并的分支代码并不是最新,那就直接撤销再合并好了. git reset --hard HEAD 用来撤销还没commit 的merge,其实原理就是放弃index和工作区 ...
- 19.C# 泛型
1.泛型的概念 所谓泛型,即通过参数化类型来实现在同一份代码上操作多种数据类型.泛型编程是一种编程范式,它利用“参数化类型”将类型抽象化,从而实现更为灵活的复用. 2. .net提供的泛型 2.1可空 ...
- cocos creator使用anysdk接入admob广告教程
http://lolling787.lofter.com/post/1f5b6553_12925042 cocos creator使用anysdk接入admob广告
- poi java读取excel文件
官网使用学习链接地址 http://poi.apache.org/components/spreadsheet/quick-guide.html