Selenium(Python)PageObject页面对象
使用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页面对象的更多相关文章
- PageObject 页面对象模式
一.PageObject 页面对象设计模式 (一个页面建一个类,即对象,页面对象) 每个页面都建对应的class,类中包含了页面的输入框.标题.元素等元素,测试代码中测试这个页面时,只需要调用这个页 ...
- Selenium(Python)页面对象+数据驱动测试框架
整个工程的目录结构: 常用方法类: class SeleniumMethod(object): # 封装Selenium常用方法 def __init__(self, driver): self.dr ...
- python selenium 多个页面对象类使用同一个webdriver(即只打开一个浏览器窗口)
1 class BasePage(): 2 """selenium基类""" 3 4 def __init__(self, driver=N ...
- selenium python 定位一组对象
为什么定位一组对象? 定位一组对象的思想 在定位一组对象的过程中我们如何实现?以前的都是通过具体的对象定位,那么定位一组我们就需要通过css来定位 在单个定位对象中使用的是find_elem ...
- selenium webdriver(2)---页面对象定位
webdriver的元素定位很灵活,提供了多种定位方式: Id LinkText PartialLinkText Name TagName Xpath ClassName CssSelector 这些 ...
- selenium + python 登录页面,输入账号、密码,元素定位问题
示例简介: 要求:登录QQ邮箱,输入账号.密码 出现问题:页面中含有iframe框架,因此直接进行元素的查找与操作,出现找不到元素的现象,首先需进行iframe框架的转换,使用switch_to_fr ...
- selenium+python对页面元素进行高亮显示
调用js方法: execute_script(script,*args) Arguments对象: 类数组对象,代表传给一个function的参数列表,当前函数的内置属性,其长度是由实参个数决定而不是 ...
- selenium+python关于页面滚动条滑动到底的问题总结
1.如果滚动条是针对整个HTML可以用如下方式: js = "var q=document.documentElement.scrollTop=10000" # documentE ...
- [译]Selenium Python文档:六、页面对象
本章是介绍页面对象设计模式的教程.一个页面对象代表了web应用用户接口的一片区域,你的测试代码将与之交互的. 使用页面对象模式的好处: 可以创建在多个测试样例中都可使用的可重用代码 减少重复性代码 如 ...
随机推荐
- Kali-linux攻击WordPress和其他应用程序
今天越来越多的企业利用SAAS(Software as a Service)工具应用在他们的业务中.例如,他们经常使用WordPress作为他们网站的内容管理系统,或者在局域网中使用Drupal框架. ...
- tensorflow训练代码
from tensorflow.examples.tutorials.mnist import input_data import tensorflow as tf mnist = input_dat ...
- zabbix安装(网络)
https://www.zabbix.com/documentation/3.4/zh/manual/quickstart/login zabbix安装官网 https://www.zabbix. ...
- ng2-bootstrap的modal嵌套时无法滚动的情况
在ng2-bootstrap的弹窗modal中再弹出另外一个弹窗,关闭子弹窗后,父弹窗会出现无法上下滚动的情况. 通过观察样式可知,关闭子弹窗前,父弹窗的body上是有modal-open样式的,关闭 ...
- STM32F103片外运行代码分析
STM32F103片外运行代码分析 STM32F103有三种启动方式: 1.从片内Flash启动: 2.从片内RAM启动: 3.从片内系统存储器启动,内嵌的自举程序,用于串口IAP. 无法直接在片外N ...
- Spring 整合Mybatis Mapper动态代理方法
先看项目目录结构 很清爽了 最重要的Spring的核心配置文件,看一下 <?xml version="1.0" encoding="UTF-8"?> ...
- 逍遥云天 微信小程序开发之获取用户手机号码——使用简单php接口demo进行加密数据解密
后边要做一个微信小程序,并要能获取用户微信绑定的手机号码.而小程序开发文档上边提供的获取手机号码的接口(getPhoneNumber())返回的是密文,需要服务器端进行解密,但是官方提供的开发文档一如 ...
- 自己花了2天时间,重新整理了个全面的vue2的模板
自己花了2天时间,重新整理了个全面的vue2的模板,基本vue中需要的部分都整理封装好了,希望大家喜欢^ ^.欢迎大家star或者fork呀~,https://github.com/qianxiaon ...
- 创建<Bean>sessionFactory错误, init方法调用失败;嵌套异常是org.hibernate.exception。
未知原因:在Maven中hibernate映射开启了自动更新表,出现此异常 org.springframework.beans.factory.BeanCreationException: Error ...
- PHP | 获取数组长度的方法
一.获取一维数组的长度 count.sizeof 都可以直接统计一维数组长度. 例如:$arr = Array('0','1','2','3','4'); echo count($arr) ...