zoukankan      html  css  js  c++  java
  • python+selenium实现跨浏览器兼容性测试

    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框架,如DjangoPyramidTurboGearsTornadoweb2pyZopeFlask等,可以让程序员轻松地开发和管理复杂的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:Python34Scriptspip.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:Python34python.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

  • 相关阅读:
    2020软件工程第三次作业
    2020软件工程作业02
    2020软件工程作业01
    2020软件工程个人作业06——软件工程实践总结作业
    2020软件工程作业05
    2020软件工程作业00——问题清单
    2020软件工程作业04
    2020软件工程作业03
    2020软件工程作业02
    2020软件工程作业01
  • 原文地址:https://www.cnblogs.com/lightsong/p/4245781.html
Copyright © 2011-2022 走看看