练手1:python3+selenium

#!/usr/bin/env python
# coding=utf-8

from selenium import webdriver
import time
from selenium.webdriver.support.ui import WebDriverWait
m = webdriver.Safari()

def get_ele_times(driver, times, func):
    # 一直执行函数func,直至func函数返回not false,或达到超时时间times
    return WebDriverWait(driver, times).until(func)


def open_browser():
    # 打开浏览器,并返回浏览器句柄(实例化一个浏览器对象)
    webdriver_handle = webdriver.Firefox()
    # 最大化浏览器窗口
    webdriver_handle.maximize_window()
    return webdriver_handle


def open_url(handle, url0):
    # 打开网页
    handle.get(url0)


def find_ele(d, **args):
    """
        **表示需要传入字典
        1、text_id
        2、select_id
        3、user_id
        4、pwd_id
        5、login_id
        :return text_id,select_id,user_id,pwd_id,login_id
    """
    if 'text_id_k' in args.keys():
        # 需要先判断网站中是不有text_id,若有就进行登录操作,否则关闭浏览器,退出程序
        text_id_v = get_ele_times(d, 10,
                                  lambda d: d.find_element_by_xpath(args['text_id_k']))
        text_id_v.click()
        select_id_v = d.find_element_by_xpath(args['select_id_k'])
        select_id_v.click()
        user_id_v = d.find_element_by_xpath(args['user_id_k'])
        pwd_id_v = d.find_element_by_xpath(args['pwd_id_k'])
        login_id_v = d.find_element_by_xpath(args['login_id_k'])
        # return返回的是一个元组
        return user_id_v, pwd_id_v, login_id_v


def send_values(*tuple_ele1, **arg):
    """
    :param tupleele: 表传入的是由要控制的页面元素组成的一个元组
    :param arg: 传入用户数据列表list_date中的一个为字典的数据
    :return:
    """
    # tuple_ele1[0].clear()
    # tuple_ele1[0].send_keys(arg['username'])
    #
    # 写一个循环,要遍历元组tuple_ele1,遍历字典arg:使用i作为元组的索引,
    i = 0
    for key in arg.keys():
        tuple_ele1[i].clear()
        tuple_ele1[i].send_keys(arg[key])
        i += 1
    tuple_ele1[i].click()


def check_result(d, text):
    try:
        d.find_element_by_link_text('请您输入验证码')
        print('请您输入验证码')

    except:
        d.find_element_by_link_text('hyh')
        print('登录成功')


def login_test(dict_ele1, list_date1):
    d = open_browser()
    open_url(d, dict_ele['url'])

    tuple_ele = find_ele(d, **dict_ele)
    for arg in list_date1:
        # 有多组数据需要输入时,应循环遍历"list_date"列表中的所有元素
        send_values(*tuple_ele, arg)
        check_result(d, '请输入验证码')


if __name__ == "__main__":
    url = "https://baidu.com/"
    login_id1 = "/html/body/div[1]/div[1]/div/div[3]/a[7]"
    select_id = "//*p[@title='用户名登录']"
    user_id = "//*[@id='TANGRAM__PSP_10__userName']"
    pwd_id = "//*[@id='TANGRAM__PSP_10__password']"
    login_id2 = "//*[@id=1TANGRAM__PSP_10__submit']"
    username = 'hyh'
    pwd = '123'
    username1 = 'hyh1'
    pwd1 = '456'
    dict_ele = {'url': url, 'text_id_k': login_id1, 'select_id_k': select_id, 'user_id_k': user_id,
                'pwd_id_k': pwd_id, 'login_id_k': login_id2}
    list_date = [{'username': username, 'pwd': pwd}, {'username1': username1, 'pwd1': pwd1}]
    login_test(dict_ele, list_date)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值