【问题标题】:Getting error for datetime in python在python中获取日期时间错误
【发布时间】:2015-11-06 04:45:54
【问题描述】:

我有一个名为 global.py 的文件和一个创建报告的函数:

import datetime

class customFail(Exception):pass

def createReport(myModule,iOSDevice,iOSVersion):
    now=datetime.datetime.now()
    resultPath="../Results"
    resultFile="Result_%d_%d_%d_%d_%d_%d.html" % (now.day,now.month,now.year,now.hour,now.minute,now.second)
    fileName="%s/%s" % (resultPath,resultFile)

    fNameObj=open("../Results/resfileName.txt","w")     #Writing result filename temporary 
    fNameObj.write(fileName)                            #in a file to access this filename by other functions (rePass,resFail)

    fileObj=open(fileName,"w")
    fileObj.write("<html>")
    fileObj.write("<body bgcolor=\"Azure\">")
    fileObj.write("<p>                                                           </p>")
    fileObj.write("<table width=\"600\" border=\"5\">");
    fileObj.write("<tr style=\"background-color:LemonChiffon;\">")
    fileObj.write("<td width=\"40%\"><b>Module : </b>"+ myModule+"</td>")
    fileObj.write("<td width=\"30%\"><b>Time : </b>"+ now.strftime("%d-%m-%Y %H:%M")+"</td>")
    fileObj.write("</tr>")
    fileObj.write("<tr>")
    fileObj.write("</tr>")
    fileObj.write("</table>")
    fileObj.write("<table width=\"600\" border=\"5\">");
    fileObj.write("<tr style=\"background-color:BurlyWood;\">")
    fileObj.write("<td width=\"70%\"><b>Device : </b>"+ iOSDevice+" - <b>  Version : </b>"+ iOSVersion+"</td>")
    fileObj.write("</tr>")
    fileObj.write("</table>")
    #fileObj.write("<br>")

还有一个脚本文件,我在其中调用此函数,称为 scripts.py

import os
from selenium import webdriver
from selenium.webdriver.firefox.webdriver import WebDriver
from selenium.webdriver.common.action_chains import ActionChains
import time
import sys
sys.path.append('/Users/admin/Desktop/_Suite/Global Scripts/')
from funcLib import *
from myGlobal import *



wd = deviceSelection();
iOSVersion="i7"
iOSDevice="iPhone"
modName="BAT"
suiteStartTime=0

def main():
   start() 
   fntesttrial();
   finish(); 

def  start():
       global modName,suiteStartTime
       global appName,ctx_app,ctx_simulator
       suiteStartTime=time.time();
       createReport(modName,iOSDevice,iOSVersion)

stts=api_clr_acnt.fnClearAccount(myDict["UserName"],myDict["Password"],myDict["Environment"])

def fntesttrial():    
    try:
    wd.find_element_by_name("Accept").click()
    time.sleep(5)   
    wd.find_element_by_name("Sign In").click()
    time.sleep(5)
    wd.find_element_by_name("Need help?").click()
    time.sleep(5)
    wd.find_element_by_name("Close").click()
    time.sleep(5)
    finally:
        wd.quit()

main()

当我运行它时,我收到如下错误:

   now=datetime.datetime.now()
NameError: global name 'datetime' is not defined

我不明白为什么会出现该错误。请帮助我,因为我是 python 新手。

【问题讨论】:

  • 您确定其他脚本已正确保存,您能否检查您的主脚本是否正确选择了更改后的 global.py?
  • 谢谢阿南德。对不起

标签: python appium


【解决方案1】:

我认为您需要在脚本文件的顶部导入日期时间(代码块 2)。它会给您错误,因为日期时间确实在脚本中未定义,因为它还没有进口的呢。 当您调用“createReport()”时,无法定义“now”,因为它调用了未导入的 datetime 模块。

如果你愿意,你可以在方法定义的开头写 import datetime,但是如果你调用了两次方法,它会 import datetime 两次,所以你最好只在第二个开头导入它代码块。

【讨论】:

    猜你喜欢
    • 2017-03-18
    • 1970-01-01
    • 2019-01-21
    • 2016-08-01
    • 1970-01-01
    • 2017-11-16
    • 2021-09-28
    • 1970-01-01
    • 2020-12-12
    相关资源
    最近更新 更多