• python学习_模块化示例


    以登陆为例,示例登陆写法

    #1.流水写法,最基本写法
    from selenium import webdriver
    
    
    driver = webdriver.Firefox()
    driver.get("https://test.xxx.com/login.jhtml")
    
    driver.find_element_by_id("u_username").send_keys("jilu1219")
    driver.find_element_by_id("u_password").send_keys("xxxxxx")
    driver.find_element_by_id("u_submit").click()
    

    #2.把登陆抽成方法,仍在同一个文档里头

    from selenium import webdriver
    
    
    def login(openUrl,username,password):
        driver.get(openUrl)
        driver.find_element_by_id("u_username").send_keys(username)
        driver.find_element_by_id("u_password").send_keys(password)
        driver.find_element_by_id("u_submit").click()
        
    
    
    driver = webdriver.Firefox() 
      
    login("https://test.xxx.com/login.jhtml","jilu1219","xxxxxx") 
        
    

    #3.把登陆抽成方法login.py,与实际登陆代码test0424001.py放在同一个目录下

     1 #login.py 代码
     2 
     3 #coding=utf-8
     4 
     5 from selenium import webdriver
     6 
     7 def login(openUrl,username,password):
     8     driver = webdriver.Firefox()
     9     driver.get(openUrl)
    10     driver.find_element_by_id("u_username").send_keys(username)
    11     driver.find_element_by_id("u_password").send_keys(password)
    12     driver.find_element_by_id("u_submit").click()
    13 
    14 
    15 #################################
    16 #实际登陆代码,保存为test0424001.py
    17 from selenium import webdriver
    18 import login
    19 
    20     
    22 driver = webdriver.Firefox()
    23 
    24 login.login("https://test.xxxx.com/login.jhtml","jilu1219","xxxxxx")
    25     

    #4.把登陆抽成一个方法login.py,与实际登陆代码test0424001.py放在不同目录下

    现目录如下:

    D:Desktop estPython est0424001.py

    D:Desktop estPythonpubliclogin.py

    D:Desktop estPythonpublic\__init__.py

    #当把login.py 抽到public目录下时,需在此目录下新建__init__.py 空文件

    #login.py 代码 ,未变
    #coding=utf-8
    
    from selenium import webdriver
    
    
    
    def login(openUrl,username,password):
        driver = webdriver.Firefox()
        driver.get(openUrl)
        driver.find_element_by_id("u_username").send_keys(username)
        driver.find_element_by_id("u_password").send_keys(password)
        driver.find_element_by_id("u_submit").click()
        
        
    #test0424001.py 代码
    
    #coding=utf-8
    
    from selenium import webdriver
    
    import sys
    sys.path.append("public")  #注意需扩展path路径
    
    from public import login
    
    driver = webdriver.Firefox()
    
    login.login("https://test.xxxx.com/login.jhtml","jilu1219","xxxxxx")

     #5.在以上的基础上把登陆网址、用户名、密码参数化,把数据保存在一个.csv文件中

    现目录如下:

    D:Desktop estPython est0424004.py

    D:Desktop estPythonpubliclogin.py

    D:Desktop estPythonpublic\__init__.py

    D:Desktop estPythonpublicloginData.py

    D:Desktop estPythondataloginData.csv

    #loginData.py 代码
    
    #coding=utf-8
    import csv
    
    def loginData():
        my_file = "D:\Desktop\testPython\data\loginData.csv"
        datas=csv.reader(file(my_file,'rb'))
        for data in datas:
            openUrl = data[0]
            username = data[1]
            password = data[2]
    
        return openUrl,username,password;
    #login.py 代码
    
    #coding=utf-8
    
    from selenium import webdriver
    import time
    
    
    def login(openUrl,username,password):
        driver = webdriver.Firefox()
        driver.get(openUrl)
        driver.find_element_by_id("u_username").send_keys(username)
        driver.find_element_by_id("u_password").send_keys(password)
        driver.find_element_by_id("u_submit").click()
        
        
    
    #test0424004.py 代码, 主要测试用例文件
    
    #coding=utf-8
    
    from selenium import webdriver
    
    import sys
    sys.path.append("public")  #注意需扩展path路径
    
    from public import login
    from public import loginData
    import csv
    
    driver = webdriver.Firefox()
    
    openUrl,username,password=loginData.loginData()  #注意
    
    login.login(openUrl,username,password)

    #6.若导入数据有多行需参数化,则在#5的基础上需做些 小调整。需调整loginData.py 及test0424004.py 代码,其余保持不变。login.py保持不变。

    #loginData.py daima
    
    #coding=utf-8
    
    import csv
    
    def loginData():
        my_file = "D:\pythonTest\dataloginData.csv"
        datas = csv.reader(file(my_file,'rb'))
        return datas  #注意
    #test0424004.py代码
    
    #coding=utf-8
    
    from selenium import webdriver
    import time
    import sys
    sys.path.append("public")
    
    from public import login
    from public import loginData
    import csv
    
    driver = webdriver.Firefox()
    
    #注意通过循环取出
    datas=loginData.loginData()
    for data in datas:
        openUrl = data[0]
        username = data[1]
        password = data[2]
        login.login(openUrl,username,password)
        

     #7.若导入的csv有表头,则#6不适用,需再调整。需调整test0424004.py。login.py 不变。loginData.py不要了。

    #test0424004.py代码调整

    import
    time import sys sys.path.append("public") from public import login import csv driver = webdriver.Firefox() #读取csv文件,文档有表头 with open('D:pythonTestdataloginData02.csv','rb') as csvfile: reader = csv.DictReader(csvfile) urls = [] usernames = [] passwords= [] for row in reader: if row['if_excute'] != 'if_excute': url = row['url'] username = row['username'] password = row['password'] urls.append(url) usernames.append(username) passwords.append(password) #print urls #print passwords #print usernames i = 0 while i <len(urls): login.login(urls[i],usernames[i],password[i]) i += 1

    ##########    下面的例子与上面的例子无关,全部推到重来。  #############

    #7.引入unittest框架 流水写法

    #coding=utf-8
    from selenium import webdriver
    import time,unittest
    
    class Aipaike_pc(unittest.TestCase):
        def setUp(self):
            self.driver = webdriver.Firefox()
            self.driver.implicitly_wait(30)
            self.base_url="https://test.xxxx.com/login.jhtml"
            self.verificationErrors=[]
            self.accept_next_alert=True
    
        #登录用例,全部用例必须以test_命名
        def test_login(self):
            driver=self.driver
            driver.get(self.base_url)
            driver.find_element_by_id("u_username").send_keys("jilu1219")
            driver.find_element_by_id("u_password").send_keys("xxxxxx")
            driver.find_element_by_id("u_submit").click()
            time.sleep(5)
            driver.close()
    
        def tearDown(self):
            self.driver.quit()
            self.assertEqual([],self.verificationErrors)
    
    if __name__ == "__main__":
        unittest.main()
          
  • 相关阅读:
    SQL SERVER备份数据库存储过程.
    JMail组件使用中文文档
    Oracle,SQL Server,Access万能数据库通用类!
    快速幂的理解及使用
    关于地图坐标问题转换
    ref和依赖注入
    Unity3D 中的程序后台运行
    Unity中创建双面材质
    Unity3d 移动平台中文显示问题
    Unity3D 4.0中使用传统动画
  • 原文地址:https://www.cnblogs.com/jilu1219/p/6756105.html
Copyright © 2020-2023  润新知