1 '''
2 command:3
4 python KillJobs.py -url=172.20.9.42:1100 -screenShotPath=*****5
6 '''
7
8 from selenium importwebdriver9 from selenium.common.exceptions importNoSuchElementException10 from selenium.webdriver.common.keys importKeys11 importre12 importtime13 importargparse14 importsys15 importos16
17
18 mailReceiver =[19 "xxxxxxxxxxxxxxxx@xx"
20 ]21
22 ZOMBIE_JOB_LIST = {"list1": [], "list2": [], "list3":[]}23
24 defget_mail_receiver():25 receiver = ' '
26 for recv inmailReceiver:27 receiver = receiver + recv + ' '
28
29 returnreceiver30
31 defkill_zombie_jobs(screenShotPath, url):32 browser = webdriver.PhantomJS() #Get local session of PhantomJS
33 #browser = webdriver.Firefox() # Get local session of Firefox
34 browser.set_window_size(2500, 2000)35
36 targetUrl = "http://%s/#JOBS" %url37 print "url:", targetUrl38
39 job_to_be_kill_indicate =040
41 browser.get(targetUrl) #Load page
42 userName = browser.find_elements_by_class_name("gwt-TextBox")43 password = browser.find_elements_by_class_name("gwt-PasswordTextBox")44 submitButton = browser.find_elements_by_class_name("gwt-Button")45
46 if len(userName) == 0 or len(password) == 0 or len(submitButton) ==0:47 print "error in open url: %s" %targetUrl48 browser.quit()49 return
50
51 userName[0].send_keys("root")52 password[0].send_keys("changeit")53 time.sleep(1)54 submitButton[0].click()55
56 time.sleep(2)57
58 sceen_shot_name = screenShotPath + "/Before_kill_jobs_screen_shot.png"
59 browser.save_screenshot(sceen_shot_name)60
61 jobs_name_pattern_0 = "//body/div[2]/div[2]/div/div[4]/div/div[3]/div/div[4]/div/div[2]/div/div[2]/div/div/div/div[3]/table[2]/tbody/tr[1]/td/fieldset/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td[1]"
62 jobs_name_pattern = "//body/div[2]/div[2]/div/div[4]/div/div[3]/div/div[4]/div/div[2]/div/div[2]/div/div/div/div[3]/table[2]/tbody/tr[1]/td/fieldset/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr[Order]/td[1]"
63 jobs_duration_pattern = "//body/div[2]/div[2]/div/div[4]/div/div[3]/div/div[4]/div/div[2]/div/div[2]/div/div/div/div[3]/table[2]/tbody/tr[1]/td/fieldset/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr[Order]/td[5]"
64
65 for i in range(1, 4):66 tmp_list = "list"+str(i)67 job_name_elements_list =browser.find_elements_by_xpath(jobs_name_pattern_0)68 job_length =len(job_name_elements_list)69
70 for index in range(1, job_length+1):71 job_name_pattern = jobs_name_pattern.replace("Order", str(index))72 job_duration_pattern = jobs_duration_pattern.replace("Order", str(index))73 job_name =get_element_name(browser, job_name_pattern)74 job_duration_time =get_duration_time(get_element_name(browser, job_duration_pattern))75
76 if len(job_name) > 10 and job_duration_time ==0:77 ZOMBIE_JOB_LIST[tmp_list].append(job_name)78 time.sleep(60)79
80 zombie_job_list =get_zombie_job_list(ZOMBIE_JOB_LIST)81 print "\n ---------To be killed job list:", zombie_job_list82 len1 =len(zombie_job_list)83 print "\n ---------To be killed job list length:", len184 kill_jobs_in_list(browser, zombie_job_list)85 print "\n ---------After killed job list:", zombie_job_list86 len2 =len(zombie_job_list)87 print "\n ---------After killed job list length:", len288
89 time.sleep(2)90 sceen_shot_name = screenShotPath + "/After_kill_jobs_screen_shot.png"
91 browser.save_screenshot(sceen_shot_name)92 browser.quit()93
94 if len2
<