重置 python 脚本中的所有变量(如果术语错误,请更改)



当代码出现故障时,我希望代码重置并再次运行。 我想我有能力做到这一点,但是当代码在失败时重置时,它不会清除 x 的值。 因此,代码将继续保持中断状态,从而否定返回开始的原因。

import time
from selenium.webdriver.common.action_chains import ActionChains
from selenium.common.exceptions import MoveTargetOutOfBoundsException
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
import os
import glob
fp = webdriver.FirefoxProfile('directory_on_computer')
browser = webdriver.Firefox(fp)
browser.get('a_website')
time.sleep(8)
browser.find_element_by_id("ctl00_PlaceHolderMain_login_UserName").clear()
browser.find_element_by_id("ctl00_PlaceHolderMain_login_UserName").send_keys("user")
browser.find_element_by_id("ctl00_PlaceHolderMain_login_password").clear()
browser.find_element_by_id("ctl00_PlaceHolderMain_login_password").send_keys("pass")
browser.find_element_by_id("ctl00_PlaceHolderMain_login_login").click()
try:
    ReportMgr= browser.find_element_by_partial_link_text('Report Manager')
    ReportMgr.click()
    time.sleep(5)
    CustomReport= browser.find_element_by_partial_link_text('Custom Report')
    CustomReport.click()
    time.sleep(5)
    ProgramManagement= browser.find_element_by_partial_link_text('Program Management')
    ProgramManagement.click()
    ProgramManagement= browser.find_element_by_partial_link_text('Program Management').send_keys(Keys.ARROW_LEFT)
########testing area below

########Save below
    for x in range(1, 71):
        browser.find_element_by_partial_link_text('Program Management').click()
        time.sleep(120)
        browser.find_element_by_partial_link_text('Program Management').send_keys(Keys.ARROW_DOWN * x, Keys.ENTER)
        time.sleep(120)   
        browser.find_element_by_css_selector("#ctl00_PlaceHolderMain_ReportViewer1_HtmlOutputReportResults2_CSVButton_ImageAnchor > img").click()
        time.sleep(120)    
        browser.find_element_by_partial_link_text('Program Management').click()
        time.sleep(120)
except: 
  pass

如果不需要完全重置,而是需要重置局部的自定义变量,请创建一个函数并使用函数命名空间。然后只需在循环中调用该函数并离开循环重新启动。

编辑 13th Mar 2016

#do one-time imports here
def exec_code():
    ## define local vars at the beginning of the code
    counter = 0    ## counter is local to the function and dropped when leaving the func
    ## arbitrary function code
    while True:
        counter += 2
        print "counter is %i, ending at 10" % counter
        answer = raw_input("Restart? (Enter 'y'+return to restart): ")
        if answer == "y": 
            return True      ##  Return True to exit the function and restart
        if counter >= 10:
            return False     ##  Return False or None to exit the loop and do not restart
while exec_code(): pass

相关内容

最新更新