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登录邮箱的操作封装成多个方法去执行的更多相关文章

  1. 用python 将 pymysql操作封装成类

    觉得代码啰嗦的可以把logging日志删掉,但是工程中时刻要记得写日志 import pymysql import logging import sys # 加入日志 #获取logger实例 logg ...

  2. Selenium自动化发送163邮箱

    自动化发送163邮件 方法一: import time import datetime from selenium import webdriver from selenium.webdriver.s ...

  3. selenium+java定位163/126邮箱元素显示定位失败解决

    开始在没有进入iframe时,用任何方法定位163/126邮箱登录页面的元素都不可能定位到,eclipse工作台会显示Unable to locate element:…… 这种情况我遇到了两种原因: ...

  4. 接口测试入门(3)--使用httpClient进行登录用例操作/set-cookies验证/ List<NameValuePair>设置post参数/json解析

    (最近学的都是很基础的接口测试,都是基于UI界面可见的接口,就是发请求,接收响应,分析返回的结果,校验,对共通模块进行封装,仅此而已,其实做自动化的思路基本都是如此,UI也是.) 现在开始用httpC ...

  5. foxmail收取163企业邮箱设置,不能直接用foxmail默认的配置,否则一直提示帐号密码错误

    foxmail收取163企业邮箱设置,不能直接用foxmail默认的配置,否则一直提示帐号密码错误,收件.发件服务器配置需要用imap.ym.163.com,smtp.ym.163.com三级域名,帐 ...

  6. UI自动化学习笔记- Selenium一些特殊操作的处理

    一.特殊操作处理 1. 下拉选择框操作 1.1 如何操作下拉选择框 实现方式一 思路:先定位到要操作的option元素,然后执行点击操作 driver.find_element_by_css_sele ...

  7. linux查看ssh用户登录日志与操作日志

    linux查看ssh用户登录日志与操作日志 2013-11-01转载   ssh用户登录日志 linux下登录日志在下面的目录里:  代码如下 复制代码 cd /var/log 查看ssh用户的登录日 ...

  8. foxmail创建163公司企业邮箱的时候会出现ERR Unable to log on

    foxmail创建163公司企业邮箱的时候会出现ERR Unable to log on 解决办法:把pop.qiye.163.com更改为pop.ym.163.com,瞬间创建成功....也许是网易 ...

  9. persistence_timeout ,域名请求登录后一操作即被踢出,,KeepAlive,lvs

    virtual_server *.*.*.* 80 { delay_loop 6 lb_algo wrr lb_kind DR persistence_timeout 120 protocol TCP ...

随机推荐

  1. 51Nod 1010 只包含因子2 3 5的数

    K的因子中只包含2 3 5.满足条件的前10个数是:2,3,4,5,6,8,9,10,12,15. 所有这样的K组成了一个序列S,现在给出一个数n,求S中 >= 给定数的最小的数. 例如:n = ...

  2. YII1 增、删、改、查数据库操作

    增 //注意插入的时候 是用的new Post $objectPost = new Post; $objectPost->username = $username; $objectPost-&g ...

  3. Docker Swarm 介绍 or 工作原理

    Docker Swarm 介绍 Swarm 简介 Swarm是Docker公司自研发的容器集群管理系统,Swarm在早期是作为一个独立服务存在,在Docker Engine v1.12中集成了Swar ...

  4. node:express:error---填坑之路

    express版本4.0之后需要安装的东西 npm install -g express npm install -g express-generator jade转换成ejs(修改为html引擎,打 ...

  5. 【Ruby】【环境搭建】macOS Sierra 10.12.6 + Xcode 8 + gpg 2.2.8 + rvm 1.29.3 + Ruby 2.4.0 + RubyMine 2018.1.4

      按出场顺序: macOS Sierra 10.12.6  +  Xcode 8 + gpg 2.2.8 + rvm 1.29.3 +  Ruby 2.4.0 + RubyMine 2018.1.4 ...

  6. python读取xml文件中的坐标点

    用labelImg工具制作好xml文件后,需要读取其中img路径和坐标点,生成一个label.txt <annotation> <folder>big</folder&g ...

  7. vscode ----> 学习笔记

    java开发环境 jdk配置 maven配置 file --> preferences --> settings 在search settings搜索关键词 java.home , mav ...

  8. Pycharm:设置Tab键一次性为4个空格

    File > Settings > Editor > Code Style > Python

  9. 如何从零开始在github上新建项目

    准备工作: (1)安装git: Git-2.16.1-64-bit.exe (2)新建一个文件夹grpc007,作为本地git仓库 (3)进入到grpc007目录,右键/打开git bash.使用gi ...

  10. vue2.0s中eventBus实现兄弟组件通信

    在vue1.0中,组件之间的通信主要通过vm.$dispatch沿着父链向上传播和用vm.$broadcast向下广播来实现.然而在vue2.0中,已经废除了这种用法. vuex加入后,对组件之间的通 ...