Selenium

  • 使浏览器兼容性测试自动化成为可能,但是在不同的浏览器上依然有细微的差别
  • 测试浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。
  • 测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。
  • 框架底层使用JavaScript模拟真实用户对浏览器进行操作。测试脚本执行时,浏览器自动按照脚本代码做出点击,输入,打开,验证等操作,就像真实用户所做的一样,从终端用户的角度测试应用程序。
  • 使用简单,可使用Java,Python等多种语言编写用例脚本。

自动化发送163邮件

import time
import datetime
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait # 等待页面加载某些元素
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By def login(user, pwd):
""" 登录163邮箱 """
# 由于可以扫码登录,而我们选择用户名和密码登录,所以,要点击 密码登录
time.sleep(1)
wait.until(EC.presence_of_element_located((By.ID, 'switchAccountLogin'))).click()
# 进入iframe,因为有多个iframe,所以获取的是数组,在分析页面后,数组0索引的iframe是登陆的iframe
time.sleep(3)
iframe = driver.find_elements_by_tag_name('iframe')
# print(iframe)
'''
[
<selenium.webdriver.remote.webelement.WebElement (session="3f92dbd96e72746e7d27d64e6b412318", element="0.855888743369456-2")>,
<selenium.webdriver.remote.webelement.WebElement (session="3f92dbd96e72746e7d27d64e6b412318", element="0.855888743369456-3")>,
<selenium.webdriver.remote.webelement.WebElement (session="3f92dbd96e72746e7d27d64e6b412318", element="0.855888743369456-4")>,
<selenium.webdriver.remote.webelement.WebElement (session="3f92dbd96e72746e7d27d64e6b412318", element="0.855888743369456-5")>
]
'''
driver.switch_to.frame(iframe[0]) # 获取用户名和密码标签,并输入对应的值
time.sleep(1)
driver.find_element_by_class_name('dlemail').send_keys(user)
time.sleep(2)
driver.find_element_by_class_name('dlpwd').send_keys(pwd)
time.sleep(2)
driver.find_element_by_id('dologin').click() def send_mail():
""" 发送163邮件,需要传递163的用户名和密码,收件人和内容 """ try:
# 第1步,执行登陆
login(user, pwd) # 第2步,点击写信按钮
wait.until(EC.presence_of_element_located((By.ID, '_mail_component_24_24'))).click()
# driver.find_element_by_id('_mail_component_24_24').click() # 第3步,获取收件人,主题,内容框标签,写入内容
time.sleep(1)
# 3.1 填写收件人
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'nui-editableAddr-ipt'))).send_keys(addr) # 收件人
time.sleep(2)
# 3.2 填写主题
title = driver.find_elements_by_class_name('nui-ipt-input')
# print(11111, title)
title[2].send_keys(theme) # 主题
# title.send_keys(theme) # 主题 # 3.3 进入content所在iframe,填写内容
time.sleep(1)
content_iframe = driver.find_element_by_class_name('APP-editor-iframe')
driver.switch_to.frame(content_iframe)
# 虽然nui-scroll这个类名在整个网页中有多个,但是这个iframe中只有一个,所以我们直接send_keys就行
nui_scroll = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'nui-scroll')))
# print(22222222, nui_scroll) # <selenium.webdriver.remote.webelement.WebElement (session="106a6f5778c14568827014435ddcfcd9", element="0.07847410617283446-1")>
nui_scroll.send_keys(content) # 第4步,因为发送按钮不在此时的iframe中,所以要先退出iframe,才能点击发送按钮
# 4.1 退出iframe
time.sleep(1)
driver.switch_to.default_content()
# 4.2 点击发送按钮
time.sleep(1)
# 这个发送按钮的类名有多个,最好for循环一下,因为有坑,发送按钮是第3个,前面还有两个空标签,但是前端检查中看不到
driver.find_elements_by_class_name('nui-btn-text')[2].click() finally:
# 关闭浏览器
time.sleep(3)
driver.quit()
# 截止2019-6-11,代码无误 if __name__ == '__main__': from getpass import getpass
user = input("邮箱: ").strip() # 填写你的163账号
pwd = getpass('密码: ') # 填写你的163密码
# 获取driver
driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)
# driver.maximize_window()
# 发请求
driver.get('https://mail.163.com/') addr = "1206180814@qq.com" # 收件人
theme = '我是你爸爸' # 主题
content = '天不生我李淳罡,剑道万古如长夜 ————\n{}'.format(datetime.datetime.now()) # 发送内容
send_mail()

Selenium-浏览器兼容性测试自动化的更多相关文章

  1. Web浏览器兼容性测试工具如何选择

    对于前端开发工程师来说,网页兼容性测试工程师而言,确保代码在各种主流浏览器的各个版本中都能正常工作是件很费时的事情,幸运的是,有很多优秀的工具可以帮助测试浏览器的兼容性,领测软件测试网向您推荐12款很 ...

  2. Web前端页面的浏览器兼容性测试心得(二)搭建原汁原味的IE8测试环境

    如果你做的页面被老板或PM要求兼容IE8,你就值得同情了.IE8不支持HTML5,在2017年的前端界,开发者不涉及HTML5标准简直寸步难行.然而,有一个可怕的事实客观存在,那就是IE8是Win7系 ...

  3. 试用saucelabs进行浏览器兼容性测试

    Hi,all 跟大家分享下saucelabs,一个云测试平台,支持PC和手机(自带的)浏览器的兼容性测试,并且支持selenium/appium的自动化测试,不过是收费的,价格还挺贵,但是人工的测试是 ...

  4. [技术博客]基于动态继承类、WebDriver的浏览器兼容性测试框架搭建

    问题背景 观察使用selenium进行自动化测试的过程,我们可以将它概述为: 启动测试进程,在该进程中构建WebDriver 启动浏览器进程,将它与WebDriver建立连接 使用WebDriver向 ...

  5. python+selenium实现跨浏览器兼容性测试

    python https://www.python.org/ python是一种脚本语言, 易学易用,可以助你快速实现业务逻辑,高效集成系统. ----- http://zh.wikipedia.or ...

  6. Web前端页面的浏览器兼容性测试心得(一)搭建测试用本地静态服务器

    自从实习以来,我体验了由一个人编程再到多人协作编程的转换.同时也接触了很多新鲜事物,学到了很多东西.工作时,常常需要多个人协同测试一张H5页面(PC.手机.平板等跨设备测试),也会经常把页面给PM或老 ...

  7. Web前端页面的浏览器兼容性测试心得(三)总结一些IE8兼容问题的解决方案

    由于IE8不支持HTML5,而它又是Win7的默认浏览器,我们即使讨厌它,在这几年却也拿它没办法. 最近做了个需要兼容IE8的项目,不可避免地用了HTML5+CSS3,甚至canvas和svg,做兼容 ...

  8. Selenium浏览器自动化测试框架

    selenium简介 介绍 Selenium [1]  是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 1 ...

  9. Web端网站兼容性测试如何进行?来看看浏览器的兼容性测试要点

    软件兼容性测试工作的目标是保证软件按照用户期望的方式进行交互.随着用户对来自各种类型软件之间共享数据能力和充分利用空间同时执行多个程序能力的要求,测试软件之间能否协作变得越来越重要. 平台的兼容性,包 ...

随机推荐

  1. (五)myBatis架构以及SQlSessionFactory,SqlSession,通过代理执行crud源码分析---待更

    MyBatis架构 首先MyBatis大致上可以分为四层: 1.接口层:这个比较容易理解,就是指MyBatis暴露给我们的各种方法,配置,可以理解为你import进来的各种类.,告诉用户你可以干什么 ...

  2. Linux学习1-云服务器上搭建禅道项目管理工具

    前言 相信各位测试的小伙伴出去面试总会被问到:测试环境怎么搭建?一个中级测试工程师还是对测试环境一无所知的话,面试官会一脸鄙视的,今天我给大家介绍一下最简单的环境部署-—如何在云服务器部署禅道环境. ...

  3. Elasticsearch原理学习--为什么Elasticsearch/Lucene检索可以比MySQL快?

    转载于:http://vlambda.com/wz_wvS2uI5VRn.html 同样都可以对数据构建索引并通过索引查询数据,为什么Lucene或基于Lucene的Elasticsearch会比关系 ...

  4. dubbo 分布式服务框架 介绍

    Dubbo是阿里巴巴内部的SOA服务化治理方案的核心框架,每天为2000+ 个服务提供3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点.Dubbo自2011年开源后, ...

  5. Class Literal(Java)

    前言 上一节我们讨论过通过关键字synchronized实现线程同步,同时最主要了解到在Java中className.class所代表的具体含义,在博客写完后,感觉还是有点迷糊,然后再次深入了解后,原 ...

  6. python随用随学20200220-异步IO

    啥是异步IO 众所周知,CPU速度太快,磁盘,网络等IO跟不上. 而程序一旦遇到IO的时候,就需要等IO完成才能进行才能进行下一步的操作. 严重拖累了程序速度. 因为一个IO操作就阻塞了当前线程,导致 ...

  7. Kotlin Tutorials系列文章

    Kotlin Tutorials系列文章 想写一个有实用价值的Kotlin笔记, 让一线开发一看就懂, 看完就能上手. 当然官方文档更有参考价值了. 这个系列相对于官方文档的大而全来说, 最主要优势是 ...

  8. sqli-labs-Basic Challenges

    sqli_labs注入学习 一.SQL基本语法 1.1show databases; 显示MySQL数据库里边所有的库: 1.2use [table name]; 使用特定的数据库: 1.3show ...

  9. Hadoop之HDFS扩容方法

    HDFS就是用来存取数据的,那么当数据太多的时候存不下,我们必需扩充硬盘容量,或者换个更大的硬盘. 由于它是分布式文件系统,有两种扩充HDFS集群容量的方法:横向扩容和纵向扩容 横向扩容 横向扩容就是 ...

  10. opencv —— convexHull 寻找并绘制凸包

    凸包的定义: 包含点集 S 所有点的最小凸多边形称为凸包. 凸包绘制原理:Graham 扫描法 首先选择 y 方向上最低的点作为起始点 p0. 然后以 p0 为原点,建立极坐标系,做逆时针极坐标扫描, ...