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

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

main.py:
#注意:编码格式
#算法:
(1)定义多个方法,分别执行不同的操作
(2)拼接一个长的字符串,方法和参数用逗号(,)隔开,每个方法之间用回车键“
”隔开
(3)将长字符串切割成这样的格式“方法名,参数”,strip().split("
")
(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("
")
        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)
原文地址:https://www.cnblogs.com/jingsheng99/p/9231835.html