码迷,mamicode.com
首页 > Web开发 > 详细

【webdriver自动化】将163登录邮箱的操作封装成多个方法去执行

时间:2018-06-27 00:53:15      阅读:295      评论:0      收藏:0      [点我收藏+]

标签:out   expr   glob   nbsp   web   username   port   split   编码   

login_info.txt:
youxiang_99@163.com,XXXX
youxiang_100@163.com,XXXX

main.py:
#注意:编码格式
#算法:
(1)定义多个方法,分别执行不同的操作
(2)拼接一个长的字符串,方法和参数用逗号(,)隔开,每个方法之间用回车键“\n”隔开
(3)将长字符串切割成这样的格式“方法名,参数”,strip().split("\n")
(4)用split(",")判断参数长度,例如“sleep,5”参数长度len(step)==2,拼接成command,用类似“sleep(5)”,这里最好用command="%s(%s)"%(step[0],step[1])这样的方式,不容易拼接错误
(5)用eval函数执行command
from selenium import webdriver
import time
import chardet

driver=""
def open_browser():
    global driver
    driver=webdriver.Ie(executable_path="c:\\IEDriverServer")

def visit_url(url):
    global driver
    driver.get(url)

def switch_to_frame(frame_xpath_expression):
    global driver
    time.sleep(3)
    frame=driver.find_element_by_xpath(frame_xpath_expression)
    driver.switch_to.frame(frame)

def input(element_xpath_expression,content):
    global driver
    element=driver.find_element_by_xpath(element_xpath_expression)
    element.clear()
    element.send_keys(content)

def click(element_xpath_expression):
    global driver
    element=driver.find_element_by_xpath(element_xpath_expression)
    element.click()

def assert_str_in_page_source(s):
    global driver
    assert s in driver.page_source

def get_out_of_frame():
    driver.switch_to_default_content()

def sleep_time(seconds):
    time.sleep(float(seconds))

def close():
    global driver
    driver.quit()

with open("c:\\login_info.txt") as f:
    for data in f:
        username_data,pwd_data=data.strip().split(",")
        steps="""open_browser
visit_url,http://mail.163.com
switch_to_frame,//iframe[@id=‘x-URS-iframe‘]
input,//input[@placeholder=‘邮箱帐号或手机号‘ and @name=‘email‘],%s
input,//input[@placeholder=‘密码‘],%s
click,//a[@id=‘dologin‘]
sleep_time,5
get_out_of_frame
assert_str_in_page_source,退出
close""" %(username_data,pwd_data)

        steps=steps.split("\n")
        print steps
        command=""
        for step in steps:
            step=step.split(",")
            if len(step)==1:
                command="%s()"%(step[0])
            elif len(step)==2:
                command="%s(u‘%s‘)"%(step[0],step[1].decode("utf-8"))
            elif len(step)==3:
                command="%s(‘%s‘,u‘%s‘)"%(step[0],step[1],step[2])
            print "command:",command
            eval(command)

 

【webdriver自动化】将163登录邮箱的操作封装成多个方法去执行

标签:out   expr   glob   nbsp   web   username   port   split   编码   

原文地址:https://www.cnblogs.com/jingsheng99/p/9231835.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!