Python实战之Selenium自动化测试web登录(2)
#!/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)的更多相关文章
- Python实战之Selenium自动化测试web登录
#!/usr/bin/env python3 # -*- coding:utf-8 -*- from selenium import webdriver from selenium.webdriver ...
- Python实战之Selenium自动化测试web刷新FW
需求:将手工登录,手工刷新服务器的FW转化为Python+Selenium实现自动化操作. 1.创建用户表,实现数据与脚本分离.需要读取模块. 2.自动化刷新FW. 不说话,直接上代码: 1userd ...
- 《手把手教你》系列技巧篇(四十五)-java+ selenium自动化测试-web页面定位toast-上篇(详解教程)
1.简介 在使用appium写app自动化的时候介绍toast的相关元素的定位,在Web UI测试过程中,也经常遇到一些toast,那么这个toast我们这边如何进行测试呢?今天宏哥就分两篇介绍一下. ...
- 《手把手教你》系列技巧篇(四十六)-java+ selenium自动化测试-web页面定位toast-下篇(详解教程)
1.简介 终于经过宏哥的不懈努力,偶然发现了一个toast的web页面,所以直接就用这个页面来夯实一下,上一篇学过的知识-处理toast元素. 2.安居客 事先声明啊,宏哥没有收他们的广告费啊,纯粹是 ...
- python selenium 自动化测试web
如何使用python完成自动化测试web页面呢?首选selenium 那基于python的selenium如何使用,下面看一段测试案例: 基于python的selenium 安装方法: pip i ...
- python实战项目 — selenium登陆豆瓣
利用selenium 模仿浏览器,登陆豆瓣 重点: 1. 要设置好 chromedriver配置与使用, chromedriver.exe 和 Chrome的浏览器版本要对应, http://chro ...
- 使用python+selenium对web进行自动化测试
想用python代码,对web网页进行自动化测试 web自动化测试和手动测试的区别: 手动测试:通过手动去对网页的功能进行点点点 web自动化:可以通过代码,自动对网页点点点 首先,将python+s ...
- 第一个python&selenium自动化测试实战项目
说明:本项目采用流程控制思想,未引用unittest&pytest等单元测试框架 一.项目介绍 目的 测试某官方网站登录功能模块可以正常使用 用例 1.输入格式正确的用户名和正确的密码,验证是 ...
- 《Selenium自动化测试实战:基于Python》Selenium自动化测试框架入门
第1章 Selenium自动化测试框架入门 1.1 Selenium自动化测试框架概述 说到目前流行的自动化测试工具,相信只要做过软件测试相关工作,就一定听说过Selenium. 图1-1是某企业 ...
随机推荐
- h5audio标签
因为音频格式有版权,各浏览器使用不同的音频格式. 音频格式兼容性 音频格式 Chrome Firefox IE9 Opera Safari MP3 支持 不支持 支持 不支持 支持 OGG 支持 支持 ...
- jdbc预编译
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp20 JAVA_JDBC预编译 相关知识点 什么是预编译语句? 预编译语句P ...
- Oracle之range,hash,list分区现实应用及优缺点汇总
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp51 [align=center;] Oracle之range,hash,l ...
- android-学习1 配置环境
转载注明出处,谢谢--http://www.cnblogs.com/JK-HYJ/ 前提:电脑先配置好java的环境-- adk_bundle下载安装地址:http://tools.android-s ...
- 关于selenium IDE找不到元素
selenium IDE ,明明存在元素,却找不到元素 ,报错Element not found 标签: seleniumselenium IDE自动化测试ide 2016-10-31 13:25 1 ...
- Linux shell中的竖线(|)——…
原文地址:Linux shell中的竖线(|)--管道符号作者:潇潇 管道符号,是unix一个很强大的功能,符号为一条竖线:"|". 用法: command 1 | command ...
- FormData 上传多种格式的文件
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- 转深入Java虚拟机 之四:类加载机制
转载请注明出处:http://blog.csdn.net/ns_code/article/details/17881581 类加载过程 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个 ...
- 如何设置Cookie 的值为中文的内容
默认情况下,cookie的值是不允许中文内容的.可以借助于java.net.URLEncoder先对中文字符串进行编码,将编码后的结果设为cookie值.当程序要读取cookie值时,先读取,然后使用 ...
- 201521123005 《java程序设计》 第六周学习总结
1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...