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)