使用PageObject页面对象的好处是,

当页面元素的位置发生改变时,

只需要去修改Xpath或者ID,

而不用去修改测试用例本身;

本次的思路是:

1、常用方法类

2、页面对象类

3、测试用例类

WebDriverMethod.py:

class SeleniumMethod(object):
# 封装Selenium常用方法 def __init__(self, driver):
self.driver = driver
     # 构造函数 def getTitle(self):
# 获取页面标题
return self.driver.title def clearAndInput(self, location, value):
# 根据xpath定位元素并清除、输入
element = self.driver.find_element_by_xpath(location)
element.clear()
element.send_keys(value) def click(self, location):
# 根据xpath定位元素并点击
return self.driver.find_element_by_xpath(location).click() def getText(self, location):
# 根据xpath定位元素并获取文本值
return self.driver.find_element_by_xpath(location).text

BaiduHome.py:

from WebDriverMethod import SeleniumMethod

class BaiduPage(SeleniumMethod):
# 百度页面对象 inputBox = ".//*[@id='kw']"
# 百度输入框
searchBotton = ".//*[@id='su']"
# 百度搜索按钮 responseTitle = "中国_百度搜索"
# 搜索结果页的标题
oneResult = ".//*[@id='1']/h3/a"
# 第一行
oneResultText = "中国_百度百科"
# 第一行的文本 def searchChinese(self):
# 搜索中国
self.clearAndInput(self.inputBox, "中国")
self.click(self.searchBotton)

BaiduTest.py:

import unittest
from time import sleep from selenium import webdriver from BaiduHome import BaiduPage class MyTestCase(unittest.TestCase): def setUp(self):
self.driver = webdriver.Firefox()
self.driver.maximize_window()
self.driver.get("https://www.baidu.com/")
     assert self.driver.title, "百度一下,你就知道"
sleep(2) def test_searchChinese(self):
# 测试用例
homePage = BaiduPage(self.driver)
homePage.searchChinese()
sleep(2)
assert homePage.getTitle(), homePage.responseTitle
# 断言搜索结果页标题
assert homePage.getText(homePage.oneResult), homePage.oneResultText
# 断言搜索结果第一行的文本 def tearDown(self):
self.driver.close()
self.driver.quit() if __name__ == '__main__':
unittest.main()

Selenium(Python)PageObject页面对象的更多相关文章

  1. PageObject 页面对象模式

    一.PageObject 页面对象设计模式  (一个页面建一个类,即对象,页面对象) 每个页面都建对应的class,类中包含了页面的输入框.标题.元素等元素,测试代码中测试这个页面时,只需要调用这个页 ...

  2. Selenium(Python)页面对象+数据驱动测试框架

    整个工程的目录结构: 常用方法类: class SeleniumMethod(object): # 封装Selenium常用方法 def __init__(self, driver): self.dr ...

  3. python selenium 多个页面对象类使用同一个webdriver(即只打开一个浏览器窗口)

    1 class BasePage(): 2 """selenium基类""" 3 4 def __init__(self, driver=N ...

  4. selenium python 定位一组对象

    为什么定位一组对象? 定位一组对象的思想    在定位一组对象的过程中我们如何实现?以前的都是通过具体的对象定位,那么定位一组我们就需要通过css来定位   在单个定位对象中使用的是find_elem ...

  5. selenium webdriver(2)---页面对象定位

    webdriver的元素定位很灵活,提供了多种定位方式: Id LinkText PartialLinkText Name TagName Xpath ClassName CssSelector 这些 ...

  6. selenium + python 登录页面,输入账号、密码,元素定位问题

    示例简介: 要求:登录QQ邮箱,输入账号.密码 出现问题:页面中含有iframe框架,因此直接进行元素的查找与操作,出现找不到元素的现象,首先需进行iframe框架的转换,使用switch_to_fr ...

  7. selenium+python对页面元素进行高亮显示

    调用js方法: execute_script(script,*args) Arguments对象: 类数组对象,代表传给一个function的参数列表,当前函数的内置属性,其长度是由实参个数决定而不是 ...

  8. selenium+python关于页面滚动条滑动到底的问题总结

    1.如果滚动条是针对整个HTML可以用如下方式: js = "var q=document.documentElement.scrollTop=10000" # documentE ...

  9. [译]Selenium Python文档:六、页面对象

    本章是介绍页面对象设计模式的教程.一个页面对象代表了web应用用户接口的一片区域,你的测试代码将与之交互的. 使用页面对象模式的好处: 可以创建在多个测试样例中都可使用的可重用代码 减少重复性代码 如 ...

随机推荐

  1. 批量解压Zip文件

    实现效果: 实现代码:

  2. Android平台上PMEM的使用及Platform设备注册(一)

    Android中PMEM驱动程序是物理内存的驱动程序,可用于分配物理内存.PMEM在camera和video系统中频繁使用.下面,简单记录一下PMEM的使用方法.另外,由于PMEM设备做为Platfo ...

  3. JS n秒后自动跳转实例

    <p><a href="<?php echo base_url();?>usercenter/index" id="message" ...

  4. JavaScript Event Loop和微任务、宏任务

    为什么JavaScript是单线程? JavaScript的一大特点就是单线程, 同一时间只能做一件事情,主要和它的用途有关, JavaScript主要是控制和用户的交互以及操作DOM.注定它是单线程 ...

  5. 如何编写及运行JS

    JS也是一种脚本语言,他可以有两种方式在HTML页面进行引入,一种是外联,一种是内部.       外联JS的写法为: <script src="相对路径"></ ...

  6. easyui datagrid 异步加载数据时滚动条有时会自动滚到最底部的问题

    在使用easyui 的datagrid异步加载数据时发现滚动条有时会自动滚到最底部.经测试发现,如果加载数据前没有选中行则不会出现这个问题.这样我们可以在重新异步加载数据前取消选中行就可以避免这个问题 ...

  7. Linux进程地址空间 && 进程内存布局[转]

    一 进程空间分布概述       对于一个进程,其空间分布如下图所示: 程序段(Text):程序代码在内存中的映射,存放函数体的二进制代码. 初始化过的数据(Data):在程序运行初已经对变量进行初始 ...

  8. npm安装包时 --save 和 --save-dev 的区别

    以npm 安装 vue为例 1.npm install vue: 会把vue包安装到node_modules目录中: 不会修改package.json文件: 之后运行npm install命令时,不会 ...

  9. vuejs 解决跨域访问问题

    首先: config/index.js下面的proxyTable配置您的服务访问基本地址,将changeOrigin设置为true即可,然后在你需要访问接口的地方,这样使用,以下是我的工程代码(前提是 ...

  10. PHP实现长网址与短网址

    原文地址:http://www.qqdeveloper.com/detail/29/1.html 什么是长链接.短链接 顾名思义,长链接就是一个很长的链接:短链接就是一个很短的链接.长链接可以生成短链 ...