login_info.txt:youxiang_99@163.com,XXXXyouxiang_100@163.com,XXXXmain.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函数执行commandfrom selenium import webdriverimport timeimport chardetdriver=""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_sourcedef 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_browservisit_url,http://mail.163.comswitch_to_frame,//iframe[@id=‘x-URS-iframe‘]input,//input[@placeholder=‘邮箱帐号或手机号‘ and @name=‘email‘],%sinput,//input[@placeholder=‘密码‘],%sclick,//a[@id=‘dologin‘]sleep_time,5get_out_of_frameassert_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登录邮箱的操作封装成多个方法去执行
原文地址:https://www.cnblogs.com/jingsheng99/p/9231835.html