#!/usr/bin/env python3
# -*- coding:utf-8 -*- from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
import time
from userdata import get_webinfo, get_userinfo, XlUserInfo
from log_module import Loginfo, Xlloginfo def get_ele_times(driver, times, func):
return WebDriverWait(driver, times).until(func) def openBrower():
'''
:return: webdriver handle
'''
webdriver_handle = webdriver.Firefox()
return webdriver_handle # def openUrl(handle, url):
# handle.get(url)
# handle.maximize_window() def openUrl(handle, arg):
handle.get(arg['url'])
handle.maximize_window() def findElement(d, arg):
'''
1.test_id:
2.USERID
3.pwdid
4.loginid
:param d:
:param arg:
:return:
'''
if 'text_id' in arg:
ele_login = get_ele_times(d, 10, lambda d: d.find_element_by_link_text(arg['text_id']))
ele_login.click()
userEle = d.find_element_by_id(arg['userid'])
pwdEle = d.find_element_by_id(arg['pwdid'])
loginEle = d.find_element_by_id(arg['loginid'])
# sign_out
# signOutEle = d.find_element_by_id(arg['signOutid'])
# print(signOutEle)
return userEle, pwdEle, loginEle def findOutele(d, arg):
try:
signOutEle = d.find_element_by_id(arg['signOutid'])
return signOutEle
except:
print("You are not login.") def sendVal(eletuple, arg):
''' :param eletuple:
:param arg:
:return:
'''
list_key = ['uname','pwd']
i = 0
for key in list_key:
eletuple[i].send_keys('')
eletuple[i].clear()
# print(arg[key])
eletuple[i].send_keys(arg[key]) i += 1
eletuple[2].click() def checkResult(d, err_id, arg, log):
result = False
time.sleep(3)
try:
err = d.find_element_by_id(err_id)
print("Account and pwd error")
# msg = "account:{},password:{}==>error:{}".format(arg['uname'],arg['pwd'], err.text)
log.log_write(arg['uname'], arg['pwd'], 'Error', err.text)
print(err.text)
except:
print("Account and pwd Right")
# msg = "Account:{},password:{}==>pass!".format(arg['uname'], arg['pwd'])
log.log_write(arg['uname'], arg['pwd'], 'Pass')
result = True
return result def logout(d, ele_dict):
d.find_element_by_class_name(ele_dict['logout']).click() def login_test(ele_dict,user_list):
d = openBrower()
# log = Loginfo()
log = Xlloginfo()
log.log_init('sheet1', 'uname', 'pwd','result', 'message')
openUrl(d, ele_dict)
ele_tuple = findElement(d, ele_dict)
# print(user_list[0])
for user_info in user_list:
sendVal(ele_tuple, user_info)
result = checkResult(d, ele_dict['errorid'], user_info, log)
# sign_out
# findOutele(d, ele_dict).click()
if result:
# logout
logout(d, ele_dict)
#login
ele_tuple = findElement(d, ele_dict)
else:
ele_tuple = findElement(d, ele_dict)
log.log_close() if __name__ == '__main__':
'''
ele_dict = {
'url': 'http://www.maiziedu.com',
'uname':'maizi_test@139.com',
'pwd': 'abc123456',
'login_text':'Login',
'text_id': login_text,
'userid': 'id_account_l',
'pwdid': 'id_password_l',
'loginid': 'login_btn',
'signOutid':'sign_out',
}
user_list = [{'uname':account,'pwd':pwd},]
'''
# file webinfo/userinfo get_webinfo(path),user_list = get
ele_dict = get_webinfo(r'webinfo.txt')
# user_list = get_userinfo(r'userinfo.txt')
xinfo = XlUserInfo(r'userinfo.xlsx')
user_list = xinfo.get_sheetinfo_by_index(0)
login_test(ele_dict,user_list)

Log_Module

#!/usr/bin/env python3
# -*- coding:utf-8 -*- import time
import xlsxwriter
class Loginfo(object):
def __init__(self, path = '', mode= 'a'):
self.file_time = time.strftime('%Y-%m-%d', time.gmtime())
self.log_time = time.strftime('%H-%M-%S')
fname = "{}{}".format(path, self.file_time)
self.log = open("{}{}.txt".format(path, fname), mode) def log_init(self, sheetname, *title):
pass def log_write(self, msg):
self.log.write("\n{}+{}".format(self.log_time, msg)) def log_close(self):
self.log.close() class Xlloginfo(object):
def __init__(self, path = ''):
fname = '{}{}'.format(path,time.strftime('%Y-%m-%d', time.gmtime()))
self.row = 0
self.xl = xlsxwriter.Workbook(path+fname+'.xls')
self.style = self.xl.add_format({'bg_color':'red'}) def xl_write(self, *args):
col = 0
style = ''
if 'Error' in args:
style = self.style
for val in args:
self.sheet.write_string(self.row, col, val)
col += 1
self.row += 1 def log_init(self, sheetname, *title):
self.sheet = self.xl.add_worksheet(sheetname)
self.sheet.set_column('A:E', 30)
self.xl_write(*title) def log_write(self, *args):
self.xl_write(*args) def log_close(self):
self.xl.close() if __name__ == '__main__':
# log = Loginfo()
# log.log_write('hahaha')
# log.log_close() xinfo = Xlloginfo()
xinfo.log_init('test12','uname','pwd', 'result', 'info')
xinfo.log_close()

UserData

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import codecs
import xlrd, xlsxwriter def get_webinfo(path):
web_info = {}
with codecs.open(path,'r','utf-8') as config:
for line in config:
result = [ele.strip() for ele in line.split('=')]
# print("Result,",result)
web_info.update(dict([result]))
return web_info def get_userinfo(path):
user_info = []
with codecs.open(path,'r','utf-8') as config:
for line in config:
user_dict = {}
result = [ele.strip() for ele in line.split(';')]
for info in result:
account = [ele.strip() for ele in info.split('=')]
# print(account)
# print("Dict",dict([account]))
user_dict.update(dict([account]))
user_info.append(user_dict)
return user_info class XlUserInfo(object):
def __init__(self, path= ''):
self.xl = xlrd.open_workbook(path) def floattostr(self, val):
if isinstance(val, float):
val = str(int(val))
return val def get_sheet_info(self):
listkey = ['uname','pwd']
infolist = []
for row in range(1, self.sheet.nrows):
info = [self.floattostr(val) for val in self.sheet.row_values(row)]
temp = zip(listkey, info)
infolist.append(dict(temp))
return infolist def get_sheetinfo_by_name(self, name):
self.sheet = self.xl.sheet_by_name(name)
return self.get_sheet_info() def get_sheetinfo_by_index(self, index):
self.sheet = self.xl.sheet_by_index(index)
return self.get_sheet_info() if __name__ == '__main__':
# userinfo = get_userinfo(r'userinfo.txt')
# print(userinfo)
# for user in userinfo:
# print(user)
# webinfo = get_webinfo(r'webinfo.txt')
# print(webinfo)
xinfo = XlUserInfo(r'userinfo.xlsx')
info = xinfo.get_sheetinfo_by_index(0)
print(info)
info = xinfo.get_sheetinfo_by_name('Sheet1')
print(info)

Python实战之Selenium自动化测试web登录(2)的更多相关文章

  1. Python实战之Selenium自动化测试web登录

    #!/usr/bin/env python3 # -*- coding:utf-8 -*- from selenium import webdriver from selenium.webdriver ...

  2. Python实战之Selenium自动化测试web刷新FW

    需求:将手工登录,手工刷新服务器的FW转化为Python+Selenium实现自动化操作. 1.创建用户表,实现数据与脚本分离.需要读取模块. 2.自动化刷新FW. 不说话,直接上代码: 1userd ...

  3. 《手把手教你》系列技巧篇(四十五)-java+ selenium自动化测试-web页面定位toast-上篇(详解教程)

    1.简介 在使用appium写app自动化的时候介绍toast的相关元素的定位,在Web UI测试过程中,也经常遇到一些toast,那么这个toast我们这边如何进行测试呢?今天宏哥就分两篇介绍一下. ...

  4. 《手把手教你》系列技巧篇(四十六)-java+ selenium自动化测试-web页面定位toast-下篇(详解教程)

    1.简介 终于经过宏哥的不懈努力,偶然发现了一个toast的web页面,所以直接就用这个页面来夯实一下,上一篇学过的知识-处理toast元素. 2.安居客 事先声明啊,宏哥没有收他们的广告费啊,纯粹是 ...

  5. python selenium 自动化测试web

    如何使用python完成自动化测试web页面呢?首选selenium   那基于python的selenium如何使用,下面看一段测试案例: 基于python的selenium 安装方法: pip i ...

  6. python实战项目 — selenium登陆豆瓣

    利用selenium 模仿浏览器,登陆豆瓣 重点: 1. 要设置好 chromedriver配置与使用, chromedriver.exe 和 Chrome的浏览器版本要对应, http://chro ...

  7. 使用python+selenium对web进行自动化测试

    想用python代码,对web网页进行自动化测试 web自动化测试和手动测试的区别: 手动测试:通过手动去对网页的功能进行点点点 web自动化:可以通过代码,自动对网页点点点 首先,将python+s ...

  8. 第一个python&selenium自动化测试实战项目

    说明:本项目采用流程控制思想,未引用unittest&pytest等单元测试框架 一.项目介绍 目的 测试某官方网站登录功能模块可以正常使用 用例 1.输入格式正确的用户名和正确的密码,验证是 ...

  9. 《Selenium自动化测试实战:基于Python》Selenium自动化测试框架入门

    第1章  Selenium自动化测试框架入门 1.1  Selenium自动化测试框架概述 说到目前流行的自动化测试工具,相信只要做过软件测试相关工作,就一定听说过Selenium. 图1-1是某企业 ...

随机推荐

  1. Error Handling in ASP.NET Core

    Error Handling in ASP.NET Core 前言  在程序中,经常需要处理比如 404,500 ,502等错误,如果直接返回错误的调用堆栈的具体信息,显然大部分的用户看到是一脸懵逼的 ...

  2. python 斐波那契数列 fibonacci

    在python中生成fibonacci数列的函数 def fibonacci(): list = [] while 1: if(len(list) < 2): list.append(1) el ...

  3. 发布一个Python小程序:ManHourCalendar

    程序诞生的那些事儿 先聊聊背景资料档案.. 大约两年前,我只身前往岛国赚点外快.在那边的派遣制度工作中,存在一个大约叫每月的标准工作时间的概念,按照自家公司跟派遣目标公司(业界称为现场)的合同,规定了 ...

  4. 转:【Java并发编程】之十五:并发编程中实现内存可见的两种方法比较:加锁和volatile变量

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/17290021 在http://blog.csdn.net/ns_code/article/ ...

  5. 结对编程1.四则运算GUI版

    201421123022 王若凡        201421123026  欧阳勇 coding详细代码 a.需求分析: 这个程序做成GUI(可以是Windows PC 上的,也可以是Mac.Linu ...

  6. 【Beta】 第四次Daily Scrum Meeting

    一.本次会议为第四次meeting会议 二.时间:10:00AM-10:20AM 地点:陆大楼 三.会议站立式照片 四.今日任务安排 成员 昨日任务 今日任务 林晓芳 查询app提醒功能模块和用户登录 ...

  7. 201521123111《Java程序设计》第4周学习总结

    1. 本章学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. Answer: - 上课还讲了tostring的使用,般toString用于返回表示对象值的 ...

  8. 201521123010 《Java程序设计》第1周学习总结

    1. 本周学习总结 第一次接触java,在与以前不同的环境下运行,初步只接触了其中的冰山一角,但也发现了java身后庞大的资源,因此也想通过对java的学习来丰富自己对编程,甚至资源的认识.本周通过学 ...

  9. 初试 Vue.js

    1.为什么我会想要来弄弄vue这个前端框架呢? 答:前段时间被小程序刷屏了,然后就去弄了一下小程序,嗯挺简单的:头脑一发热后就想到vue2也发布一段时间了,何不也来尝尝vue2.0的味道,最后发现它们 ...

  10. ajax中的suceess函数使用this

    今天在写ajax的时候,后台返回数据给前台,可是总是不能把数据正常显示在页面上... 明明已经进入了success函数了,并且在该代码的前后都能够正常执行.. success: function (r ...