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

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)
上一篇:第三百四十七节,Python分布式爬虫打造搜索引擎Scrapy精讲—通过downloadmiddleware中间件全局随机更换user-agent浏览器用户代理


下一篇:Linux Kernel 空指针逆向引用拒绝服务漏洞