设为首页 收藏本站
查看: 857|回复: 0

[经验分享] python+selenium实现跨浏览器兼容性测试

[复制链接]

尚未签到

发表于 2015-12-1 15:00:18 | 显示全部楼层 |阅读模式
python
  https://www.python.org/
  python是一种脚本语言, 易学易用,可以助你快速实现业务逻辑,高效集成系统。
  ----- http://zh.wikipedia.org/zh-cn/Python:
  它的语法简单,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。
  Python经常被用于Web开发。比如,通过mod_wsgi模块,Apache可以运行用Python编写的Web程序。使用Python语言编写的Gunicor
  n作为Web服务器,也能够运行Python语言编写的Web程序。Python定义了WSGI标准应用接口来协调Http服务器与基于Python的Web程序之间的沟通。一些Web框架,如Django、Pyramid、TurboGears、Tornado、web2py、Zope、Flask等,可以让程序员轻松地开发和管理复杂的Web程序。
  download: https://www.python.org/downloads/release/python-279/

selenium python bindings
  selenium python bindings 提供一套简单的API,通过这些API调用了Selenium WebDriver,可以实现功能测试和验收性测试用例。
  可以支持对 Firefox 和 IE 和 chrome的调用。
  官网介绍:
  http://selenium-python.readthedocs.org/installation.html#introduction

windows安装
  1、 下载安装python3.4 https://www.python.org/ftp/python/3.4.2/python-3.4.2.msi

  2、使用cmd.exe执行如下命令,安装selenium python bindings


C:\Python34\Scripts\pip.exe install selenium
  3、下载IEdriver 和 chromedriver,并放到python安装目录下 (C:\Python34)
  https://github.com/fanqingsong/daydayup/blob/master/CSoftware/webdriver/IEDriverServer.exe
  https://github.com/fanqingsong/daydayup/blob/master/CSoftware/webdriver/chromedriver.exe
  firefox不需要驱动
  使用方法待研究驱动:
  https://github.com/dineshkummarc/operadriver
  https://github.com/mfazekas/safaridriver
  4、可以运行python的测试脚本了,例如:


C:\Python34\python.exe C:\my_selenium_script.py
  官网安装介绍:
  http://selenium-python.readthedocs.org/installation.html#downloading-python-bindings-for-selenium
  

测试脚本
  下面脚本实现, 打开baidu网页,搜索一个关键字, 依次执行三个浏览器(firefox ie chrome)。



1 #import os
2 import  time
3 from selenium import webdriver
4 from selenium.webdriver.common.keys import Keys
5
6 # test case
7 def testbrowser(driver):
8     driver.get("http://www.baidu.com")
9     driver.find_element_by_id("kw").click()
10     driver.find_element_by_id("kw").clear()
11     driver.find_element_by_id("kw").send_keys("vx")
12     driver.find_element_by_id("su").click()
13     driver.implicitly_wait(30)
14     time.sleep(3)
15     driver.close()
16     driver.quit()
17     return None
18
19 driverfirefox = webdriver.Firefox()
20 testbrowser(driverfirefox)
21
22 driverie = webdriver.Ie()
23 testbrowser(driverie)
24
25 driverchrome = webdriver.Chrome()
26 testbrowser(driverchrome)
  
  测试用例testbrowser代码可以使用 selenium IDE导出的脚本中截取主体部分:



# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
import unittest, time, re
class Baidupython(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(30)
self.base_url = "http://www.baidu.com/"
self.verificationErrors = []
self.accept_next_alert = True
def test_baidupython(self):
        driver = self.driver
driver.get(self.base_url + "/")
driver.find_element_by_id("kw").click()
driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").send_keys("vx")
driver.find_element_by_id("su").click()
def is_element_present(self, how, what):
try: self.driver.find_element(by=how, value=what)
except NoSuchElementException, e: return False
return True
def is_alert_present(self):
try: self.driver.switch_to_alert()
except NoAlertPresentException, e: return False
return True
def close_alert_and_get_its_text(self):
try:
alert = self.driver.switch_to_alert()
alert_text = alert.text
if self.accept_next_alert:
alert.accept()
else:
alert.dismiss()
return alert_text
finally: self.accept_next_alert = True
def tearDown(self):
self.driver.quit()
self.assertEqual([], self.verificationErrors)
if __name__ == "__main__":
unittest.main()
  
  也可以自己写脚本,使用selenium driver的提供的api:
  http://selenium-python.readthedocs.org/locating-elements.html
  
  python教程:
  http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0013747381369301852037f35874be2b85aa318aad57bda000
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-145976-1-1.html 上篇帖子: Python中的画图初体验 下篇帖子: Python多重装饰器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表