python+selenium实现网页测试自动化

很久没有写新文章了,去年入职了新公司,每天都忙的很,新鲜的人,新鲜的事物,新鲜的技术,终于有了一种成为程序猿的感觉了。


今天贴一点代码出来,顺便种草一个自动化网页测试框架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();


猜你喜欢

转载自blog.csdn.net/kingdz618/article/details/80036208