发布新日志

  • selenium python 导入的包 内容:

    2014-03-13 10:50:13

    #-*- 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
    import unittest, time, re
    #鼠标事件
    from selenium.webdriver.common.action_chains import ActionChains  
    

  • os.path 模块 转载

    2014-03-13 10:02:21

    os.path.abspath(path)

    返回path规范化的绝对路径。

    >>> os.path.abspath('test.csv')

    'C:\\Python25\\test.csv'

    >>> os.path.abspath('c:\\test.csv')

    'c:\\test.csv'

    >>> os.path.abspath('../csv\\test.csv')

    'C:\\csv\\test.csv'


    os.path.split(path)

    将path分割成目录和文件名二元组返回。

    >>> os.path.split('c:\\csv\\test.csv')

    ('c:\\csv', 'test.csv')

    >>> os.path.split('c:\\csv\\')

    ('c:\\csv', '')


    os.path.dirname(path)

    返回path的目录。其实就是os.path.split(path)的第一个元素。

    >>> os.path.dirname('c:\\csv\test.csv')

    'c:\\'

    >>> os.path.dirname('c:\\csv')

    'c:\\'


    os.path.basename(path)

    返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素。

    >>> os.path.basename('c:\\test.csv')

    'test.csv'

    >>> os.path.basename('c:\\csv')

    'csv' (这里csv被当作文件名处理了)

    >>> os.path.basename('c:\\csv\\')

    ''

    os.path.commonprefix(list)

    返回list中,所有path共有的最长的路径。

    如:

    >>> os.path.commonprefix(['/home/td','/home/td/ff','/home/td/fff'])

    '/home/td'


    os.path.exists(path)

    如果path存在,返回True;如果path不存在,返回False。

    >>> os.path.exists('c:\\')

    True

    >>> os.path.exists('c:\\csv\\test.csv')

    False


    os.path.isabs(path)

    如果path是绝对路径,返回True。


    os.path.isfile(path)

    如果path是一个存在的文件,返回True。否则返回False。

    >>> os.path.isfile('c:\\boot.ini')

    True

    >>> os.path.isfile('c:\\csv\\test.csv')

    False

    >>> os.path.isfile('c:\\csv\\')

    False


    os.path.isdir(path)

    如果path是一个存在的目录,则返回True。否则返回False。

    >>> os.path.isdir('c:\\')

    True

    >>> os.path.isdir('c:\\csv\\')

    False

    >>> os.path.isdir('c:\\windows\\test.csv')

    False


    os.path.join(path1[, path2[, ...]])

    将多个路径组合后返回,第一个绝对路径之前的参数将被忽略。

    >>> os.path.join('c:\\', 'csv', 'test.csv')

    'c:\\csv\\test.csv'

    >>> os.path.join('windows\temp', 'c:\\', 'csv', 'test.csv')

    'c:\\csv\\test.csv'

    >>> os.path.join('/home/aa','/home/aa/bb','/home/aa/bb/c')

    '/home/aa/bb/c'


    os.path.normcase(path)

    在Linux和Mac平台上,该函数会原样返回path,在windows平台上会将路径中所有字符转换为小写,并将所有斜杠转换为饭斜杠。

    >>> os.path.normcase('c:/windows\\system32\\')

    'c:\\windows\\system32\\'


    os.path.normpath(path)

    规范化路径。

    >>> os.path.normpath('c://windows\\System32\\../Temp/')

    'c:\\windows\\Temp'


    os.path.splitdrive(path)

    >>> os.path.splitdrive('c:\\windows')

    ('c:', '\\windows')


    os.path.splitext(path)

    >>> os.path.splitext('c:\\csv\\test.csv')

    ('c:\\csv\\test', '.csv')

     

    os.path.getsize(path)
    返回path的文件的大小(字节)。


    >>> os.path.getsize('c:\\boot.ini')
    299L

  • selenium webdriver python _test suite

    2014-02-26 10:10:27

     
    if __name__ == "__main__":
    suite = unittest.TestSuite()
    suite.addTest(类名("类中的方法名1"))
    suite.addTest(类名("类中的方法名2"))
    。。。。。
    unittest.TextTestRunner().run(suite)
    可以加N个方法。。。
    我们对代码进行一下分析:
    class login实现一个继承unittest.Testcase的类,
    unittest.main()来测试该类中以test开头的测试用例
    setUp初始化程序:可以看到存放是启动wedbdriver程序
    tearDowni清整程序:只要setup启动成功,不管以test开头的case程序是否执行成功,teardown程序都将被执行。
    is_element_present这个函数是用来查找页面元素是否存在,在这里用处不大,通常删除。因为判断页面元素是否
    存在一般都加在testcase中.

  • 学习链接备份

    2014-02-25 21:34:47

    https://github.com/easonhan007/webdriver_guide 乙醇的github

    http://selenium.googlecode.com/git/docs/api/py/api.html#webdriver-common    webdriver python api


    http://blog.163.com/yang_jianli/blog/static/161990006201281831228222/  selenium API 


    http://www.cnblogs.com/fnng/p/3183777.html 学习应用网站

    http://blog.163.com/ly676830315@126/blog/static/10173372220131022113452843/ 弹出新的窗口的识别

    http://blog.csdn.net/nbkhic/article/details/6897070



    http://www.51testing.com/html/34/n-848334-2.html 应用 

    内容总结为: 
     def test_baidu_yinyue(self):
            driver = self.driver
            driver.get(self.base_url + " ")
            time.sleep(3)
            driver.find_element_by_link_text("音 乐").click()
            if driver.current_url == 'http://music.baidu.com/':
                print '不错'
                print driver.title
            time.sleep(3)
            driver.find_element_by_link_text("新闻").click()
            print driver.current_url
            driver.maximize_window()
            time.sleep(2)
            driver.back()
            print driver.current_url
            time.sleep(2)
            driver.forward()
            time.sleep(2)
            print driver.current_url

    注: 
    #-*- coding:utf-8 -*- 如果不认识link 则需要加上这个。


    ==================================


    =====================
  • selenium 定位元素方法

    2014-02-24 22:38:01

    # -*- 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
    import unittest, time, re
    import time
    import os

    class Checkbox(unittest.TestCase):
        def setUp(self):
            self.driver = webdriver.Chrome()
            self.driver.implicitly_wait(30)
            '''
            self.base_url = "F:\fanxr\Selenium\test\train\test.html"
    '''
            self.verificationErrors = []
            self.accept_next_alert = True
       
        def test_baidu(self):
            driver = self.driver
            file_path =  'file://' + os.path.abspath('checkbox.html')
            driver.get(file_path)
            inputs = driver.find_elements_by_tag_name('input')
            '''
            print len(inputs)
    #打印input的个数
            for input in inputs:
                if input.get_attribute('type') == 'checkbox':
                    input.click()
            time.sleep(2)
            inputs=driver.find_elements_by_tag_name('input')
            for input in inputs:
                if input.get_attribute('type') == 'radio':
                    input.click()
            time.sleep(2)
            for input in inputs:
                if input.get_attribute('type') == 'checkbox':
                    input.click()
    #选择复选框以后,在click(就是取消选择。)
            time.sleep(5)
            '''
            '''
            checkboxs=driver.find_elements_by_css_selector('input[type=checkbox]')
            for checkbox in checkboxs:
                checkbox.click()
            time.sleep(5)
            '''
         # 选择最后一个checkbox并click pop() 方法用于删除并返回数组的最后一个元素。
            driver.find_elements_by_css_selector('input[type=checkbox]').pop().click()
            time.sleep(2)

    ==============================================================
    #通过CSS方式定位 browser.find_element_by_css_selector("#kw").send_keys("selenium") #通过xphan方式定位

    browser.find_element_by_xpath("//input[@id='kw']").send_keys("selenium")

    <a href="http://news.baidu.com" name="tj_news">新 闻</a>

    driver.find_element_by_css_selector("a[name=\"tj_news\"]").click()


    <a onclick="queryTab(this);" mon="col=502&pn=0" title="web" href="http://www.baidu.com/">网页</a>

    driver.find_element_by_css_selector("a[title=\"web\"]").click()


    <a class="RecycleBin xz" href="javascript.:void(0);"> 

    driver.find_element_by_css_selector("a.RecycleBin").click()


    xpath:idRelative (id相关性)

    driver.find_element_by_xpath("//div[@id='fm']/form/span/input").send_keys("selenium") #在/form/span/input 层级标签下有个div标签的id=fm的元素
    driver.find_element_by_xpath("//tr[@id='check']/td[2]").click() # id为'check' 的tr ,定闪他里面的第2个td
    xpath:position (位置) driver.find_element_by_xpath("//input").send_keys("selenium") driver.find_element_by_xpath("//tr[7]/td[2]").click() #第7个tr 里面的第2个td
    xpath: href (水平参考) driver.find_element_by_xpath("//a[contains(text(),'网页')]").click()


    xpath:link

    driver.find_element_by_xpath("//a[@href='http://www.baidu.com/']").click()

  • QTP 问题:

    2014-02-21 15:53:41

    错误对话框
    Microsoft Visual C++ Runtime Library
    Runtime Error!
    Program: D:/Program Files/HP/QuickTest Professional/bin/QTPro.exe
    R6025
    -pure virtual function call

     

    解决方案(部分人按照这种方法能奏效):

    1)打开QTP的安装目录(C:/QuickTest Professional/bin,我装在C盘的),

    2)找到“inst_key.exe”文件,打开,

    3)将C:/Program Files/Common Files/Mercury Interactive/License Manager/LSERVRC中#之前的字符串copy输入即可


    就是这样解决问题的。

    ===================================

  • python 学习中的问题:

    2014-01-20 14:04:15

    乱码原因:
    因为你的文件声明为utf-8,并且也应该是用utf-8的编码保存的源文件。但是windows的本地默认编码是cp936,也就是gbk编码,所以在控制台直接打印utf-8的字符串当然是乱码了。


    解决方法:

    在控制台打印的地方用一个转码就ok了,打印的时候这么写:

    print myname.decode('UTF-8').encode('GBK')

    比较通用的方法应该是:

    import sys
    type = sys.getfilesystemencoding()
    print myname.decode('UTF-8').encode(type)


    ---------------------------------------

    # coding=utf-8
    #!usr/bin/python
    -
    ---------------------------------
    因为不小心把编码修改为CP936了 所以用coding=utf-8的时候打印乱码, 所以现在只需要写下边的就可以了
    # coding=cp936
    #!usr/bin/python 


    ==========================================================

    在执行python脚本时报如下错误:

    UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-78: ordinal not in range(128)


    解决方法:

    在python脚本中开头处加上以下两句代码即可:

    1. reload(sys)   
    2. sys.setdefaultencoding('utf8')  
  • 生成报告中遇到的问题

    2014-01-20 11:29:14

    http://tungwaiyip.info/software/HTMLTestRunner.html 下载

    HTMLTestRunner并当到pyhone按照目录的Lib 中

    脚本内容为:
    # coding=utf-8
    #!usr/bin/python 
    # 上边的这两个是必须要有的。 要不然的话运行有错误提示 
    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
    import unittest, time, re

    import HTMLTestRunner  # 需要导入的内容。 


    class Login(unittest.TestCase):
        def setUp(self):
            self.driver = webdriver.Firefox()
            self.driver.implicitly_wait(30)
            self.base_url = "http://mail.163.com/"
            self.verificationErrors = []
            self.accept_next_alert = True
        
        def test_login(self):
            driver = self.driver
            driver.get(self.base_url + "/")
            driver.find_element_by_id("idInput").clear()
            driver.find_element_by_id("idInput").send_keys("XXXXXX2002")
            driver.find_element_by_id("pwdInput").clear()
            driver.find_element_by_id("pwdInput").send_keys("XXXXXX")
            driver.find_element_by_id("loginBtn").click()
            for i in range(60):
                try:
                    if u"退出" == driver.find_element_by_link_text(u"退出").text: break
                except: pass
                time.sleep(1)
            else: self.fail("time out")
            driver.find_element_by_link_text(u"退出").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()
    # unittest.main()这个是必须要有的 要不testreport 中是没有内容的。
        testsuite=unittest.TestSuite()
        testsuite.addTest(Login("test_login"))
        filename="e:\\result.html"  # report所在的位置。
        fp=file(filename,'wb')
        runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title='Result',description='Test_Report')
        runner.run(testsuite)

  • RobotFramework+Selenium2环境搭建与入门实例(转载)

    2014-01-16 09:26:45

    一、安装包

    1、Python(推荐使用ActivePython,这个版本PATH已经配好了,也安了一些像pip这样的包)

    ActivePython-2.7.2.5-win32-x86.msi

    2、WxPython(注意要用2.8的版本,我用2.9的发现ride无法打开)

    wxPython2.8-win32-unicode-2.8.12.1-py27.exe

    3、robotframework(我使用的是2.8)

    robotframework-2.8.1.tar.gz

    4、安装RIDE(推荐用下面的exe安装包,它可以在桌面创建快捷方式)

    robotframework-ride-1.1.win32.exe

    http://blog.csdn.net/xc5683/article/details/10017915

    : 


    二、安装

    1、首先安装Python,这个就不用多说了,下一步下一步就好了

    2、安装wxPython也是,一路下一步就好了,注意一下,最好要以管理员身份运行

    3、安装rf,解压rf到本地目录(D:\Python27),然后python setup.py install就好了

    4、安装RIDE,也是以管理员身份运行,创建桌面快捷方式

    5、安装Selenium2Library,以管理员身份运行cmd  scripts目录下执行,然后easy_install robotframework-selenium2library就可以了

    查看selenium2library是否安装成功的方法:打开python,输入import Selenium2Library,如果出现命令提示符就 OK了,注意大小写,是Selenium2Library。



    http://www.docin.com/p-390103717.html

    如果按照文档运行的时候出问题: 请把E:\Python27\Scripts 加到path中 就可以运行

    robot framework按照说明: 
    http://www.51testing.com/html/26/424226-845458.html

    -----------------

    python+selenium2.0 

    1. 首先下载python: 地址为: http://www.python.org/ftp/python/2.7.2/python-2.7.2.msi 

    安装

    2. 安装PythonSetupTools 地址为: http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11.win32-py2.7.exe#md5=57e1e64f6b7c7f1d2eddfc9746bbaf20

    3. 安装Python的包管理工具pip ,进入DOS下的路径为“D:\Program Files\Python27\Scripts

    执行安装命令“easy_install pip”,等待安装完成

    4. 在执行: easy_install -U setuptools 等待安装完成
    
    5. 安装基于python的Selenium安装包, 执行命令“pip 
    install selenium”,等待安装完成;
    参考网址: http://blog.sina.com.cn/s/blog_b5fe6b2701019w33.html
    http://stackoverflow.com/questions/20905350/latest-pip-fails-with-requires-setuptools-0-8-for-dist-info

    chromedriver 下载地址: http://code.google.com/p/chromedriver/downloads/detail?name=chromedriver_win32_2.0.zip&can=2&q=chromedriver

  • selenium 在IE 和chrome 中运行不了

    2014-01-16 08:54:58

    IE 需要查看 安全中的internet/本地internet/可信站点中/受信站点中的 “启用保护模式(要求重新启用internet Explorer)” 要不全勾选 要不全不选 就可以了


    chrome 如果脚本没有打开 就要查看chromedriver 的版本是不是正确 (怎么看还不知道 反正是python 2.7 的 然后下载一个chromedriver 2.7 的版本就好了)

     也是很奇葩。
  • selenium 学习过程:

    2014-01-15 12:54:08

    #-*- coding:utf-8 -*-
    import time

      from  selenium  import  webdriver 
       browser=webdriver.Firefox()

    # 要想支持IE和Chrome需要将IE和chrome的驱动exe程序放置在python安装的根目录下,
    #(注:前面已经要求将pyhton安装根目录设置到环境变量path里)

    # 才能启动相应的浏览器(下载加压将其中的EXE程序放置在python的根目录下)
    # win 32bit版 [size=140%]IEDriverServer_Win32_2.25.3.zip  
    # win 64bit版  [size=140%]IEDriverServer_x64_2.25.3.zip  
    # browser = webdriver.Ie()

    # win版 chromedriver_win_23.0.1240.0.zip
    # browser = webdriver.Chrome()
  • Python 学习日志

    2014-01-07 17:31:41

    读取某一个文件夹下的文件并写到一个不存在的文件中:
     
    import os
    os.mkdir("D:/2")  // 创建文件夹
    f=open("D:/2/1.txt","w")  创建文件(存在就打开, 不存在就创建)
    for filename in os.listdir("D:\Python27"): (读取文件夹下的文件名)
        print filename
        f.writelines(filename +"\n")  //写入文件中。
    f.close()
     
    =====================
    在一个文本文件中插入10个0到9 的随机数 并共插入十行
    并读取改文本文件中的内容并打印。
     
    import random
    f= open("D:/2/1.txt","w")
    for i in range( 0,10):
        for i in range(0,10): f.write(str(random.randint(0,9)))
        f.write('\n')
    f.close()
    a=open("D:/2/1.txt")
    s=a.read()
    print s

    ======================================
    在指定的文件夹中生成N多个txt文件:

    def creatfiles(x):
        i = 0
        while i < x:
         bb = "fds"+str(i)+".txt" 
         f = open("D:\\Python27\\test\\"+bb,"w")
         f.write("today is 2009-1-7\n")
         f.write("I am very happy!")
         f.close()
         i = i+1


    if __name__ == "__main__":
        m = int(input('creatfile_numbers: '))
        creatfiles(m)
     

     
  • 使用allpairs自动设计组合测试用例

    2013-07-03 13:53:44

     
    1. 先在xls 中写好测试的条件,
     
    2. 然后从xls 复制并粘贴到写字板中并保存。
     
    3 然后使用allpairs.exe处理这个文件:
     

    allpairs.exe test.txt > output.txt
     

    4. output.txt里,PAIRING DETAILS下面的东西都是没有用的,可以直接删掉,删掉以后,结果如下:

  • 工具

    2013-06-03 11:16:51

    bitnami-redmine-2.3.1-1-windows-installer.exe
     
     
    FreeMind-Windows-Installer-1.0.0_Beta_8-max.exe
     
    bitnami-redmine-1.4.7-2-windows-installer.exe
     
     
    XMiand2002 画思维简图的。
  • Mysql 如何修改字段区分大小写

    2013-01-29 10:18:59

    # mysql u root p

    Ø  Show databases;

    Ø  User 数据库名称。

    Ø  Desc t_user

    Ø  ALTER TABLE TABLENAME MODIFY COLUMN COLUMNNAME TPYE BINARY CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL;

  • test link 的实用

    2012-12-27 13:45:47

    http://www.cnitblog.com/201/archive/2010/04/19/65448.html
  • SNTP 服务配置

    2012-11-20 10:26:25

    http://hi.baidu.com/chhmdn/item/2067b810574efef8dceecae5
  • SVN 的使用:

    2012-11-08 15:37:13

    http://wenku.baidu.com/view/443e0d76f242336c1eb95e1e.html
  • 软件生命周期:

    2012-08-15 06:50:59

    软件生命周期(SDLC,Systems Development Life Cycle,SDLC)是软件的 产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,这种按时间分程的思 想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。但随着新的面向对象的设计方法和技术的成熟,软件生命周期设计方法的指导意义正在逐步减少。
  • Win7 loadrunner 破解 转载

    2012-03-22 16:49:23

     
    LoadRunner11下载:51Testing软件测试网kGmA T
    经本人亲自测试一下链接可以下载到LR1151Testing软件测试网8y B q!Erl
    http://www.genilogix.com/downloads/loadrunner/loadrunner-11.iso
    0to VLp&{E107253
    LoadRunner11破解:51Testing软件测试网4K&R km`+H F
    破解方法和以前版本相同,我用的是LR8.0的破解文件,同样实用。就是将LR8.0中的以下两个文件替换到LR11安装目录的bin目录下:C:\Program Files\HP\LoadRunner\bin
    需要替换的两个文件名:lm70.dll mlr5lprg.dll
    LoadRunner11的license问题:
    提供一个超级license 最高支持6.5w个并发:AEACFSJI-YJKJKJJKEJIJD-BCLBR
    如果用的着的朋友请留言并将该贴顶起来,方便那些需要的朋友,如有转帖的朋友请注明出处,谢谢。
741/41234>
Open Toolbar