很久没有写新文章了,去年入职了新公司,每天都忙的很,新鲜的人,新鲜的事物,新鲜的技术,终于有了一种成为程序猿的感觉了。
今天贴一点代码出来,顺便种草一个自动化网页测试框架selenium,真的非常不错,学习成本不高,但是一旦了解,你会发现他真的可以做很多的东西。比如批量下载某个网站的歌曲之类的,你们就自行研究吧。
下面的代码省略的部分内容,写的也不是特别的好,随便看看就行。
#coding=utf-8 import datetime import time import selenium import sys from selenium import webdriver # 选择元素使用 from selenium.webdriver.common.by import By # 鼠标操作 from selenium.webdriver.common.action_chains import ActionChains # 键盘操作 from selenium.webdriver.common.keys import Keys # 引入元素等待 from selenium.webdriver.support.ui import WebDriverWait # from selenium.webdriver.support import expected_conditions as EC def getNow(): dateStr = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') #现在 return str(dateStr) selfChromeOptions = webdriver.ChromeOptions(); selfChromeOptions.add_argument('disable-infobars'); selfChromeOptions.add_argument("--start-maximized"); selfChromeOptions.add_argument('--kiosk'); driver = webdriver.Chrome(chrome_options=selfChromeOptions); #try: if True: driver.get(true_url); print("go into page ok"); if not test_prop: driver.find_element_by_id('username').send_keys(""); driver.find_element_by_id('password').send_keys(''); driver.find_element_by_class_name("formsubmit_btn").click(); print("login ok"); time.sleep(3); skip_task = False target = -1 while True: target = target + 1 driver.refresh() time.sleep(3) if target > 7: break ul = driver.find_element_by_xpath('//*[@id="workTree"]/ul'); li_list = ul.find_elements_by_tag_name('li'); for li in li_list: if str(li.text).find('mlprice') == -1: continue; print(getNow(),'左侧根树',li.text) if str(li.text).find('_' + str(target)) == -1: continue; time.sleep(1) li.find_elements_by_tag_name('ins')[0].click() time.sleep(1) if True: workUl = li.find_elements_by_tag_name('ul') time.sleep(1) workLi_list = workUl[0].find_elements_by_tag_name('li'); for workLi in workLi_list: if str(workLi.text).find('snk_') == -1: continue; print(getNow(),'左侧叶子',workLi.text,'根树标识',target) if skip_task and target == 4 and str(workLi.text).find('snk_price') == -1: continue else: skip_task = False workLi.find_elements_by_tag_name('a')[0].click(); running_task_div = driver.find_element_by_id('showRunning'); time.sleep(1) per_running_task_div_list = running_task_div.find_elements_by_tag_name('div') # 实现补偿,保证开关的状态 supplement = 1 while supplement > 0: if supplement != 1: print(getNow(),'补偿任务',supplement) supplement = supplement - 1 tmp_supplement = supplement for per_running_task_div in per_running_task_div_list: if str(per_running_task_div.text).find('snkWk') == -1: continue; if str(per_running_task_div.get_attribute('class')) == 'message-list': continue; per_worker_switch = per_running_task_div.find_elements_by_tag_name('input')[0] per_worker_switch_status = str(per_worker_switch.get_attribute('oldval')) if per_worker_switch_status == 'false': per_running_task_div_span = per_running_task_div.find_element_by_class_name('summary') print('右侧单个任务',per_running_task_div_span.text) print('右侧开关状态',per_worker_switch_status); per_worker_switch.click(); supplement = supplement + 1 time.sleep(1) if tmp_supplement == supplement: supplement = supplement - 2 time.sleep(2) time.sleep(5); driver.quit();