#!/usr/bin/env python
# -*- coding=utf-8 -*-
# coding: utf-8
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from common.read_txt import read_txt
# from common.read_csv import read_csv
from common.read_xlsx import read_xlsx
from loginfo.log_print import get_log
from common.screenshot import screenshot
def get_ele_times(driver, times, func):
return WebDriverWait(driver, times).until(func)
def is_element_exist(driver, element):
"""
判断页面元素是否存在,不存在抛出异常,返回flag=False
"""
flag = True
try:
driver.find_element_by_css_selector(element)
return flag
except:
flag = False
return flag
def open_browser():
"""
打开浏览器驱动
:return: 返回句柄
"""
driver = webdriver.Chrome()
return driver
def open_url(driver, url):
"""
打开网址
:return:
"""
driver.get(url)
driver.maximize_window()
def find_element(driver, kwargs):
"""
:param driver:浏览器句柄, kwargs必须是字典
1:login_text:登录按钮, //*[@id="head"]/div[1]/div[3]/a[7]
2:user_login_button:用户名登录按钮, //*[text()='用户名登录']
3:user_id:用户名, //*[@name=""userName""]
4:pwd_id:密码, //*[@name="password"]
5:login_id:立即登录按钮, //*[@id="TANGRAM__PSP_10__submit"]
:return:login_text, user_login_button, user_id, pwd_id, login_id
"""
get_ele_times(driver, 3, lambda d: d.find_element_by_xpath(kwargs['login_text'])).click()
get_ele_times(driver, 5, lambda d: d.find_element_by_xpath(kwargs['user_login_button'])).click()
ele_list = []
for key in kwargs.keys():
ele_name = driver.find_element_by_xpath(kwargs[key])
print(ele_name)
ele_list.append(ele_name)
# user_id = driver.find_element_by_xpath(kwargs['user_id'])
# pwd_id = driver.find_element_by_xpath(kwargs['pwd_id'])
# login_id = driver.find_element_by_xpath(kwargs['login_id'])
# ele_tuple = (user_id, pwd_id, login_id)
return ele_list
def send_values(ele_name_list, account_dict):
"""
:ele_name_list: 元素对象名称组成的list
:account_dict : 用户要输入的值组成的字典
:return:
"""
i = 2
for key in range(len(ele_name_list)-2):
try:
ele_name_list[i].send_keys('')
ele_name_list[i].send_keys(account_dict[key])
except Exception:
ele_name_list[i].click()
i = i + 1
def login_test(ele_dict, account_dict):
"""
:param ele_dict:页面元素xpath值组成的一个字典
:return:
"""
log = get_log('login_test')
log.info('登录测试')
driver = open_browser()
url = 'https://www.baidu.com/'
open_url(driver, url)
ele_list = find_element(driver, ele_dict)
send_values(ele_list, account_dict)
# 断言页面元素是否存在,不存在则截图
if not is_element_exist(driver, 'xxx'): # 定位会抛出异常
screenshot(driver)
driver.quit()
if __name__ == '__main__':
"""
login_text0 = '//*[@id="head"]/div[1]/div[3]/a[7]'
user_login_button0 = '//*[@id="TANGRAM__PSP_10__footerULoginBtn"]'
user_id0 = '//*[@name="userName"]'
pwd_id0 = '//*[@name="password"]'
login_id0 = '//*[@id="TANGRAM__PSP_10__submit"]'
ele_dict0 = {'login_text': login_text0, 'user_login_button': user_login_button0,
'user_id': user_id0, 'pwd_id': pwd_id0, 'login_id': login_id0}
user_name0 = 'aaa'
pwd0 = '123'
account_dict0 = {'user_name': user_name0, 'pwd': pwd0}
"""
ele_dict0 = read_txt('..\\test_file\\element.txt')
print(ele_dict0)
xlsx_dict = read_xlsx(path='..\\test_file\\send_values.xlsx', sheet='user_pwd')
for account in xlsx_dict:
print(account)
login_test(ele_dict0, account)