首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

selenium

项目实战

测试类型

测试静态内容静态内容测试是最简单的测试,用于验证静态的、不变化的UI元素的存在性。例如:•每个页面都有其预期的页面标题?这可以用来验证链接指向一个预期的页面。•应用程序的主页包含一个应该在页面顶部的图片吗?•网站的每一个页面是否都包含一个页脚区域来显示公司的联系方式,隐私政策,以及商标信息?•每一页的标题文本都使用的标签吗?每个页面有正确的头部文本内吗?您可能需要或也可能不需要对页面内容进行自动化测试。如果您的网页内容是不易受到影响手工对内容进行测试就足够了。如果,例如您的应用文件的位置被移动,内容测试就非常有价值。测试链接

Web站点的一个常见错误为的失效的链接或链接指向无效页。链接测试涉及点各个链接和验证预期的页面是否存在。如果静态链接不经常更改,手动测试就足够。但是,如果你的网页设计师经常改变链接,或者文件不时被重定向,链接测试应该实现自动化。功能测试在您的应用程序中,需要测试应用的特定功能,需要一些类型的用户输入,并返回某种类型的结果。通常一个功能测试将涉及多个页面,一个基于表单的输入页面,其中包含若干输入字段、提交“和”取消“操作,以及一个或多个响应页面。用户输入可以通过文本输入域,复选框,下拉列表,或任何其他的浏览器所支持的输入。功能测试通常是需要自动化测试的最复杂的测试类型,但也通常是最重要的。典型的测试是登录,注册网站账户,用户帐户操作,帐户设置变化,复杂的数据检索操作等等。功能测试通常对应着您的应用程序的描述应用特性或设计的使用场景。

测试动态元素

通常一个网页元素都有一个唯一的标识符,用于唯一地定位该网页中的元素。通常情况下,唯一标识符用HTML 标记的’id’属性或’name’属性来实现。这些标识符可以是一个静态的,即不变的、字符串常量。它们也可以是动态生产值,在每个页面实例上都是变化的。例如,有些 Web 服务器可能在一个页面实例上命名所显示的文件为doc3861,并在其他页面实例上显示为 doc6148,这取决于用户在检索的‘文档’。验证文件是否存在的测试脚本,可能无法找到不变的识别码来定位该文件。通常情况下,具有变化的标识符的动态元素存在于基于用户操作的结果页面上,然而,显然这取决于 Web 应用程序。

Ajax的测试

Ajax 是一种支持动态改变用户界面元素的技术。页面元素可以动态更改,但不需要浏览器重新载入页面,如动画,RSS 源,其他实时数据更新等等。Ajax 有不计其数的更新网页上的元素的方法。但是了解 AJAX的最简单的方式,可以这样想,在 Ajax 驱动的应用程序中,数据可以从应用服务器检索,然后显示在页面上,而不需重新加载整个页面。只有一小部分的页面,或者只有元素本身被重新加载

编写自动化测试用例

在编写用例过程中应该遵守以下几点原则:1、一个脚本是一个完整的场景,从用户登陆操作到用户退出系统关闭浏览器。2、一个脚本脚本只验证一个功能点,不要试图用户登陆系统后把所有的功能都进行验证再退出系统3、尽量只做功能中正向逻辑的验证,不要考虑太多逆向逻辑的验证,逆向逻辑的情况很多(例如手号输错有很多种情况),验证一方面比较复杂,需要编写大量的脚本,另一方面自动化脚本本身比较脆弱,很多非正常的逻辑的验证能力不强。(我们尽量遵循用户正常使用原则编写脚本即可)4、脚本之间不要产生关联性,也就是说编写的每一个脚本都是独立的,不能依赖或影响其他脚本。5、如果对数据进行了修改,需要对数据进行还原。6、在整个脚本中只对验证点进行验证,不要对整个脚本每一步都做验证。

用例存放&维护:

发送邮件:

编辑完成后测一下,如果发现定位 有问题 要自己继续找到定位 完善

#coding=utf-8

from selenium import webdriver

import unittest, time

from public import login

#得到文档元素对象

root = dom.documentElement

class TestSendMail(unittest.TestCase):

def setUp(self):

self.driver = webdriver.Firefox()

logins=root.getElementsByTagName('url')

self.base_url=logins[0].firstChild.data

self.verificationErrors = []

#只填写收件人发送邮件

def test_send_mail(self):

#登录

login.login(self,"testingwtb","a123456")

#写信

driver.find_element_by_css_selector("#_mail_component_47_47 >span.oz0").click()

#填写收件人

#发送邮件driver.find_element_by_xpath("/html/body/div[2]/div/div[2]/header/div/div/div/span[2]").click()

driver.find_element_by_xpath("//*[@class='nui-msgbox-ft-btns']/div/span").click()

#断言发送结果

text = driver.find_element_by_class_name('tK1').text

self.assertEqual(text,u'发送成功')login.logout(self)

def tearDown(self):

self.assertEqual([], self.verificationErrors)

if __name__ == "__main__":

unittest.main()

系统会弹框提示“确定真的不需要写主题吗?”,在用例中默认 click“确定”。邮件发送成功,验证“发送成功”的提示信息

#搜索邮件

def test_search_mail(self):

login.login(self,'testingwtb','a123456')

#搜索邮件

driver.find_element_by_xpath("//input[@class='nui-ipt-input' and@type='text']").send_keys(u'小明')

driver.find_element_by_xpath("//input[@class='nui-ipt-input' and@type='text']").send_keys(Keys.ENTER)

#断言搜索邮件标签页面

text= driver.find_element_by_xpath("//div[@id='dvMultiTab']/ul/li[5]/div[3]").textself.assertEqual(text,u'搜索邮件')

#调用退出

login.logout(self)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190130G070DT00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券