很久没有写新文章了,去年入职了新公司,每天都忙的很,新鲜的人,新鲜的事物,新鲜的技术,终于有了一种成为程序猿的感觉了。
今天贴一点代码出来,顺便种草一个自动化网页测试框架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();