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

时间:2023-01-22 00:27:06
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. HMC破解控制台密码

    一般我们装完HMC以后默认的登录控制台的账户是:admin 密码:abc123当我们可以自创建登录账户后,忘记密码了怎么办? 这里有两种方法: 1 由于HMC是suse系统,基于linux内核的,所以 ...

  2. Robot Framework学习笔记(三)------常用关键字介绍

    下面关键字全部由 Builtin 库提供,Builtin 为 Robot Framework 标准类库.Builtin库提供常用的关键字 1.log log 关键字就是编程语言里的"prin ...

  3. [SCOI2009][bzoj1025]游戏

    [SCOI2009][bzoj1025]游戏 标签: DP 置换 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1025 题解 很套路的题目 ...

  4. CentOS无法使用ifconfig和root密码修改

    初学Linux,总是有许多问题,这次就遇到了这个问题: 想使用ifconfig命令查看一下虚拟机的ip地址,结果发现ifconfig命令无法使用,总是显示找不到ifconfig这个命令. 上网查询帮助 ...

  5. sublimeText3编辑器 + 入门教程 + 使用大全

    sublimeText3编辑器 + 入门教程 + 使用大全 Ctrl+D选中光标所占的文本,继续操作则会选中下一个相同的的文本 ctrl+G:输入行号,可快速跳转该行 ctrl+p:输入冒号,在输入行 ...

  6. 【vue】vue +element 搭建项目,el-input 常用的验证

    1.el-input 常用布局 <el-input class="filter-item dialog-search" size="small" @key ...

  7. HTML5 移动端的上下左右滑动问题

    在移动端页面上,如果要实现[顶部轮播,手指触摸左右滑动]我的方案是,通过监听滑动,阻止默认事件来完成 div.addEventListener('touchmove',function(event){ ...

  8. 791&period; Custom Sort String字符串保持字母一样,位置可以变

    [抄题]: S and T are strings composed of lowercase letters. In S, no letter occurs more than once. S wa ...

  9. &lbrack;UWP 自定义控件&rsqb;了解模板化控件&lpar;5&rpar;:VisualState

    1. 功能需求 使用TemplatePart实现上篇文章的两个需求(Header为空时隐藏HeaderContentPresenter,鼠标没有放在控件上时HeaderContentPresent半透 ...

  10. js计算数字长度

    js调用toString方法转为字符串后取长度 var num = 123; alert(num.toString().length);