小白→python+selenium→村村美登录

本文分享了使用Python和Selenium进行村村美网站自动化登录测试的代码实现,包括浏览器操作、元素查找、输入验证及日志记录等功能。

小白→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端登录做的自动化功能测试,希望牛人指导!!!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值