#-*- coding:utf-8 -*-
# 导入单元测试
import unittest
# 导入工具类
from util import firefoxutil,urlutil
import unittest
# 导入工具类
from util import firefoxutil,urlutil
# 声明类 继承单元测试
class Shop(unittest.TestCase):
class Shop(unittest.TestCase):
# 实例化对象的方法
@classmethod
def setUpClass(self):
# 实例化工具类
self.firefox = firefoxutil.FireFox()
# 实例化 url
self.URL = urlutil.URL()
self.firefox = firefoxutil.FireFox()
# 实例化 url
self.URL = urlutil.URL()
pass
# 打开浏览器
def setUp(self):
def setUp(self):
# 打开京东主页
self.firefox.firefox_start(self.URL.JD_MAIN)
self.firefox.firefox_start(self.URL.JD_MAIN)
pass
# 关闭浏览器
def tearDown(self):
def tearDown(self):
# 关闭浏览器
self.firefox.firefox_close()
self.firefox.firefox_close()
pass
# 购物的测试用例
def test_shop(self):
def test_shop(self):
# 输入袜子
self.firefox.SendkeysID("key",u"袜子")
# 点击查找按钮
self.firefox.ClickClass("button")
self.firefox.SendkeysID("key",u"袜子")
# 点击查找按钮
self.firefox.ClickClass("button")
# 使用js定位
self.firefox.switch_to_view_js_Class("m-list")
self.firefox.switch_to_view_js_Class("m-list")
# 打印长度 获取的item列表
# 理论上在这里我们应该链接数据库去查询列表,看看和页面的展示是不是一致,或者请求接口,看看接口返回的数据和页面是不是一直
# 点击搜索按钮,需要加载网络,所以需要时间,可能会造成断言错误,所以我们需要使用强制休眠,给网络加载数据提供时间
# 设置强制休眠
# self.firefox.TimeSleep(firefoxutil.ENUMS.FIVE_TIME)
# # 进行断言数量
# self.firefox.AssertEquilCount(self, "p-img", 52)
# 理论上在这里我们应该链接数据库去查询列表,看看和页面的展示是不是一致,或者请求接口,看看接口返回的数据和页面是不是一直
# 点击搜索按钮,需要加载网络,所以需要时间,可能会造成断言错误,所以我们需要使用强制休眠,给网络加载数据提供时间
# 设置强制休眠
# self.firefox.TimeSleep(firefoxutil.ENUMS.FIVE_TIME)
# # 进行断言数量
# self.firefox.AssertEquilCount(self, "p-img", 52)
# 面试题 : 动态元素如何进行定位?
# 首先动态元素一般是列表类型,一般通过查询一组元素来返回一个列表,再通过列表的下标进行点击事件
# 通过xpath获取第一个的内容
ems = self.firefox.FindXpaths("//div[@class = 'gl-i-wrap']/div[4]/a/em")[0].text
ems = self.firefox.FindXpaths("//div[@class = 'gl-i-wrap']/div[4]/a/em")[0].text
# 打印内容
print ems
print ems
# 查询一组元素,同时点击指定坐标
self.firefox.ClickWindowClsses("p-img",0)
self.firefox.ClickWindowClsses("p-img",0)
# 使用断言
# self.firefox.AssertEquilTitle(self,ems+u"【图片 价格 品牌 报价】-京东")
# self.firefox.AssertEquilTitle(self,ems+u"【图片 价格 品牌 报价】-京东")
# 进行定位 通过class
self.firefox.switch_to_view_js_Class("crumb-wrap")
self.firefox.switch_to_view_js_Class("crumb-wrap")
# 通过 css,查找元素进行定位 点击加入购物车按钮
self.firefox.ClickCss("a#InitCartUrl")
self.firefox.ClickCss("a#InitCartUrl")
# 进行断言
self.firefox.AssertEquilTitle(self, u"商品已成功加入购物车")
self.firefox.AssertEquilTitle(self, u"商品已成功加入购物车")
# 通过css点击 到购物车结算按钮
self.firefox.ClickCss("a#GotoShoppingCart")
self.firefox.ClickCss("a#GotoShoppingCart")
# 进行断言
self.firefox.AssertEquilTitle(self, u"我的购物车 - 京东商城")
self.firefox.AssertEquilTitle(self, u"我的购物车 - 京东商城")
# 点击 去结算按钮 通过 css进行点击
self.firefox.ClickCss("a.submit-btn")
self.firefox.ClickCss("a.submit-btn")
# 点击完成提交按钮以后,断言 frame是不是可见,如果可见,说明符合我们的预期,用例通过
self.firefox.AssertTrueID(self,"dialogIframe")
self.firefox.AssertTrueID(self,"dialogIframe")
# 切换 frame 进行登陆
self.firefox.seitch_to_id_frame("dialogIframe")
self.firefox.seitch_to_id_frame("dialogIframe")
# 输入用户名和密码
# 点击账号切换
self.firefox.ClickClass("login-tab-r")
# 点击账号切换
self.firefox.ClickClass("login-tab-r")
# 输入内容
self.firefox.SendkeysID("loginname", "18010030176")
self.firefox.SendkeysID("nloginpwd", "dong512@al")
self.firefox.SendkeysID("loginname", "18010030176")
self.firefox.SendkeysID("nloginpwd", "dong512@al")
# 点击登陆
self.firefox.ClickID("loginsubmit")
self.firefox.ClickID("loginsubmit")
# 没有断言的脚本是没有任何意义的
# 设置休眠 使用强制等待 因为网络加载需要时间 休眠五秒
self.firefox.TimeSleep(firefoxutil.ENUMS.FIVE_TIME)
# 设置休眠 使用强制等待 因为网络加载需要时间 休眠五秒
self.firefox.TimeSleep(firefoxutil.ENUMS.FIVE_TIME)
# 进行断言,确保进入订单页面
self.firefox.AssertEquilTitle(self,u"订单结算页 -京东商城")
self.firefox.AssertEquilTitle(self,u"订单结算页 -京东商城")
# 提交订单 点击提交订单,将订单提交到服务器
self.firefox.ClickClass("checkout-submit")
self.firefox.ClickClass("checkout-submit")
# 点击我的订单 进行窗口的切换
self.firefox.ClickLink_Window("我的订单")
self.firefox.ClickLink_Window("我的订单")
# 设置五秒休眠
self.firefox.TimeSleep(firefoxutil.ENUMS.FIVE_TIME)
self.firefox.TimeSleep(firefoxutil.ENUMS.FIVE_TIME)
# 查询一组取消订单 点击第一个需要取消的订单
self.firefox.ClickLinks("取消订单",0)
self.firefox.ClickLinks("取消订单",0)
# 设置休眠时间
self.firefox.TimeSleep(firefoxutil.ENUMS.FIVE_TIME)
self.firefox.TimeSleep(firefoxutil.ENUMS.FIVE_TIME)
# 切换到frame里面
self.firefox.seitch_to_id_frame("dialogIframe")
self.firefox.seitch_to_id_frame("dialogIframe")
# 查询一组,点击下标为5的
self.firefox.ClickClasses("reasonBody",5)
self.firefox.ClickClasses("reasonBody",5)
# 点击提交按钮
self.firefox.ClickLink("提交")
self.firefox.ClickLink("提交")
# 设置休眠
self.firefox.TimeSleep(firefoxutil.ENUMS.FIVE_TIME)
self.firefox.TimeSleep(firefoxutil.ENUMS.FIVE_TIME)
# 切出第一个frame,为切进入第二个frame做准备
self.firefox.switch_to_content()
self.firefox.switch_to_content()
# 切换 frame ,断言订单是不是取消成功
self.firefox.seitch_to_id_frame("dialogIframe")
self.firefox.seitch_to_id_frame("dialogIframe")
# 获取内容进行断言
self.message = self.firefox.FindXpath("//div[@class = 'cancel-progress']/h3").text
self.message = self.firefox.FindXpath("//div[@class = 'cancel-progress']/h3").text
# 进行断言
self.assertEqual(self.message,u'取消申请已提交,系统正在审核')
self.assertEqual(self.message,u'取消申请已提交,系统正在审核')
# 切换本地内容,去查找控件
self.firefox.switch_to_content()
self.firefox.switch_to_content()
# 点击 x按钮,将内容✘掉
self.firefox.ClickClass("ui-dialog-close")
self.firefox.ClickClass("ui-dialog-close")
# 设置休眠,休眠的原因我们需要断言更新以后的内容,为了网页刷新以后得到内容,而不是网页没有刷新就得到内容
self.firefox.TimeSleep(firefoxutil.ENUMS.FIVE_TIME)
self.firefox.TimeSleep(firefoxutil.ENUMS.FIVE_TIME)
# 查找以及取消按钮,进行断言 //相对路径 /绝对路径 从 html写起 通过 xpath方式查找
# self.message = self.firefox.FindXpaths("//div[@class = 'status']/span")[0].text
# 通过 link去查找 ,
self.message = self.firefox.FindLinks("已取消")[0].text
# 打印到自动化测试报告里面
print self.message
# self.message = self.firefox.FindXpaths("//div[@class = 'status']/span")[0].text
# 通过 link去查找 ,
self.message = self.firefox.FindLinks("已取消")[0].text
# 打印到自动化测试报告里面
print self.message
# 进行断言,设置状态为已经取消
self.assertEqual(self.message,"已取消")
self.assertEqual(self.message,"已取消")
pass