小白→python+selenium→村村美登录
主代码块
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from usedata import get_webinfo, get_userinfo
from log_module import Loginfo
def get_ele_times(driver, times, func):
return WebDriverWait(driver, times).until(func)
def open_Brower():
a = webdriver.Firefox()
return a
def open_Url(handle, url):
handle.get(url)
handle.maximize_window()
def find_Element(a, arg):
if 'a_dlx' in arg:
ele_login = get_ele_times(a, 10, lambda a: a.find_element_by_partial_link_text(arg['a_dlx']))
ele_login.click()
useEle = a.find_element_by_xpath(arg['user_xpath'])
pwdEle = a.find_element_by_xpath(arg['pwd_xpath'])
loginEle = a.find_element_by_xpath(arg['login_xpath'])
return useEle, pwdEle, loginEle
def send_Vals(eletuple, arg):
listkey = ['name', 'pwd']
i = 0
for key in listkey:
eletuple[i].send_keys('')
eletuple[i].clear()
eletuple[i].send_keys(arg[key])
i += 1
eletuple[2].click()
def check_Result(drver, verify_text, log, arg):
try:
text = drver.find_element_by_xpath(verify_text)
print('登录失败')
if not text.text:
result = 2
msg = '用户名=%s;密码=%s:error:%s\n'%(arg['name'], arg['pwd'], '用户名或密码错误')
else:
result = 1
msg = '用户名=%s;密码=%s:error:%s\n' % (arg['name'], arg['pwd'], text.text)
log.log_write(msg)
except Exception as e:
result = 3
print('登陆成功')
msg = '用户名=%s;密码=%s:pass:%s\n' % (arg['name'], arg['pwd'], '登陆成功')
log.log_write(msg)
return result
def logout_1(a, ele_dict):
a.find_element_by_partial_link_text(ele_dict['logout']).click()
def logout_2(a, ele_dict):
a.find_element_by_partial_link_text(ele_dict['logout_2']).click()
def login_test(ele_dict, user_list):
a = open_Brower()
log = Loginfo()
open_Url(a, ele_dict['url'])
ele_tuple = find_Element(a, ele_dict)
for arg in user_list:
send_Vals(ele_tuple, arg)
result = check_Result(a, ele_dict['verify'], log, arg)
if result == 3:
logout_1(a, ele_dict)
ele_tuple = find_Element(a, ele_dict)
elif result == 2:
logout_2(a, ele_dict)
ele_tuple = find_Element(a, ele_dict)
log.log_close()
a.quit()
if __name__ == '__main__':
ele_dict = get_webinfo(r'C:\Users\Administrator\PycharmProjects\untitled2\wevinfo')
user_list = get_userinfo(r'C:\Users\Administrator\PycharmProjects\untitled2\useinfo')
login_test(ele_dict, user_list)
log_module.py
import time
class Loginfo(object):
def __init__(self, path = '', mode = 'w'):
fname = path + time.strftime('%Y-%m-%d', time.gmtime())
self.log = open(path + fname + '.txt', mode, encoding='utf-8')
def log_write(self, msg):
self.log.write(msg)
def log_close(self):
self.log.close()
if __name__ == '__main__':
log = Loginfo()
log.log_write('test Loginfo 测试')
log.log_close()
usedata.py
# coding:utf-8
def get_webinfo(path):
web_info = {}
config = open(path, 'r', encoding='utf-8')
for line in config:
result = [ele.strip() for ele in line.split('=')]
web_info.update(dict([result]))
return web_info
def get_userinfo(path):
user_info = []
config = open(path, 'r', encoding='utf-8')
for line in config:
user_dict = {}
result = [ele.strip() for ele in line.split(';')]
for r in result:
account = [ele.strip() for ele in r.split('=')]
user_dict.update(dict([account]))
user_info.append(user_dict)
return user_info
if __name__ == '__main__':
info = get_webinfo(r'C:\Users\Administrator\PycharmProjects\untitled2\wevinfo')
for key in info:
print(key, info[key])
info = get_webinfo(r'C:\Users\Administrator\PycharmProjects\untitled2\useinfo')
for r in info:
print(r)
对村村美PC端登录做的自动化功能测试,希望牛人指导!!!
本文分享了使用Python和Selenium进行村村美网站自动化登录测试的代码实现,包括浏览器操作、元素查找、输入验证及日志记录等功能。
2096

被折叠的 条评论
为什么被折叠?



