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. micropython驱动sh1106点亮oled

    继上一帖给esp32刷入micropython之后,忍不住给以esp12e也刷了micropython 这里先说一下webrepl: 通过wifi可以和esp8266交互,以及便携的传输文件 首次使用 ...

  2. Bootstrap3基础 text-right/left/center 设置标题右对齐、左对齐、居中

      内容 参数   OS   Windows 10 x64   browser   Firefox 65.0.2   framework     Bootstrap 3.3.7   editor    ...

  3. Learning-Python【30】:基于UDP协议通信的套接字

    UDP协议没有粘包问题,但是缓冲区大小要足够装数据包大小,建议不要超过 512 服务端: # 服务端 import socket server = socket.socket(socket.AF_IN ...

  4. ORM模型

    一.创建及映射(orm_intro_demo文件) 在项目新建App下的models.py文件下新建ORM模型: from django.db import models #如果要将一个普通的类变成一 ...

  5. 源码mysql-5.7.23在cmake时出现的小问题

    我是写的脚本安装mysql,cmake的步骤,另外用了一个小脚本,然后在脚本中用的bash执行的cmake命令,所以导致cmake实在子shell中执行的, 如果你是在命令行上一步一步的执行,报这个错 ...

  6. LINQ to Entities 不识别方法“System.String get_Item(Int32)”,因此该方法无法转换为存储表达式。

    1.LINQ to Entities 不识别方法“System.String get_Item(Int32)”,因此该方法无法转换为存储表达式.项目中发现linq to entities 不识别? , ...

  7. CookieHelper

    using System.Web: /// <summary> /// CookieHelper /// </summary> public static class Cook ...

  8. iSCSI网络协议.学习笔记

    Internet SCSI(iSCSI)是一种网络协议,使用TCP/IP网络来传输SCSI协议.它是代替FC(Fibre Channel-based,光纤通道) SAN的很好选择.你可以在Linux下 ...

  9. SR-IOV虚拟机的MTU与物理网卡的MTU

    在进行SR-IOV虚拟机MTU方面的测试时,出现如下情况: 1)物理网卡PF的MTU值是4000: root@compute-1:~# ip l|more1: lo: <LOOPBACK,UP, ...

  10. 第一次作业——WorkCount

    项目地址:https://gitee.com/yangfj/wordcount_project 1.软件需求分析: 撰写PSP表格: PSP2.1 PSP阶段 预估耗时 (分钟) 实际耗时 (分钟) ...