python+selenium 웹 테스트 자동화 실현

3935 단어
오랫동안 새로운 글을 쓰지 못했습니다. 작년에 새로운 회사에 입사해서 매일 바빴습니다. 신선한 사람, 신선한 사물, 신선한 기술, 마침내 프로그램원이 된 느낌이 들었습니다.
오늘 코드를 좀 붙여서 나오는 김에 자동화 웹 테스트 프레임워크인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();

좋은 웹페이지 즐겨찾기