封装空间操作为一个接口使用,而不是直接在页面中查找

from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
class Page():
url="https://www.baidu.com"
def __init__(self,driver,base_url=url):
self.base_url = base_url
self.driver=driver
def on_page(self):
print("on_page中的参数self.url"+self.url)
return self.driver.current_url == (self.base_url + self.url)
def _open(self,url):
print("_open传参:"+url)
url = self.base_url + url;
print("整合后的URL:"+url)
self.driver.get(url)
assert self.on_page(),"did not land on %s "%url
def open(self):
self._open(self.url)
def find_element(self,*loc):
return self.driver.find_element(*loc)
class Search(Page):
url='/'
search_key = (By.XPATH,"//input[@id='kw' and @class='s_ipt']")
def type_search(self,word):
self.find_element(*self.search_key).send_keys(word)
def type_submit(self):
self.find_element(By.XPATH,"//input[@id='su']").click()
def test_user_search(driver,word):
search = Search(driver)
search.open()
#通过提供的方法直接操作控件,减少冗余
search.type_search(word)
search.type_submit()
def main():
try:
driver = webdriver.Chrome("/Users/chenshanju/PycharmProjects/SeleniumOfJenkins/driver/chromedriver")
word="hello"
test_user_search(driver,word)
sleep(3)
result_text = driver.find_element_by_xpath("//span[@class='nums_text']").text
assert "百度为您找到相关结果约" in result_text,"结果比对失败"
finally:
driver.quit()
if __name__=="__main__":
main()

python selenium-8 Page Object模式的更多相关文章

  1. Python+Selenium使用Page Object实现页面自动化测试

    Page Object模式是Selenium中的一种测试设计模式,主要是将每一个页面设计为一个Class,其中包含页面中需要测试的元素(按钮,输入框,标题 等),这样在Selenium测试页面中可以通 ...

  2. 浅析selenium的page object模式

    selenium目前比较流行的设计模式就是page object,那么到底什么是page object呢,简单来说,就是把页面作为对象,在使用中传递页面对象,来使用页面对象中相应的成员或者方法,能更好 ...

  3. Python+selenium之Page Object设计模式

    Page Object是selenium自动化测试项目开发实践的最佳设计模式之一,他主要提现在对界面交互细节的封装,这样可以使测试案例隔你给加关注于业务而非界面细节,从而提高测试案例的可读性. Pag ...

  4. selenium page object模式

    页面对象模式将测试代码和被测试页面的元素及操作进行分离,以降低页面元素的变化对测试代码的影响.每个被测试的页面都会被定义一个类,类中会定位元素和操作. 如果不使用page object模式,则相同的操 ...

  5. 转 Page Object模式

    Page Object模式是Selenium中的一种测试设计模式,主要是将每一个页面设计为一个Class,其中包含页面中需要测试的元素(按钮,输入框,标题 等),这样在Selenium测试页面中可以通 ...

  6. 【C#|.NET】从细节出发(三) 逻辑层事务和page object模式

    一. 业务逻辑层的事务问题 如果你的程序分层清晰并且系统禁用复杂存储过程,那么在DA中的职责比较单一.程序的逻辑通过BLL调用各种不同模块的DA来实现数据操作.如果当需要不同模块在一个事务的时候,问题 ...

  7. Selenium+java - Page Object设计模式

    前言 Page Object(页面对象)模式,是Selenium实战中最为流行,并且被自动化测试同学所熟悉和推崇的一种设计模式之一.在设计测试时,把页面元素定位和元素操作方法按照页面抽象出来,分离成一 ...

  8. UI自动化测试的Page Object模式

    在UI级的自动化测试框架中,当页面样式改变或者页面元素属性改变,那么代码也要随之进行修改,如何做到高效快速的修改代码来适应这些改变呢,这个时候可以引入Page Object模式,也是页面对象设计模式. ...

  9. python+selenium自动化软件测试(第7章):Page Object模式

    什么是Page ObjectModel模式Page Objects是selenium的一种测试设计模式,主要将每个页面看作是一个class.class的内容主要包括属性和方法,属性不难理解,就是这个页 ...

  10. Python+Selenium+Unittest实现PO模式web自动化框架(1)

    1.什么是PO模式? PO是Page Object的缩写 PO模式是自动化测试项目开发实践的最佳设计模式之一,讲页面定位和业务操作分开,也就是把对象的定位和测试脚本分开,从而提供可维护性. 主要有以下 ...

随机推荐

  1. iOS 9 通用链接(Universal Links)

    什么是Universal Links? 在iOS9之前,对于从各种从浏览器.Safari中唤醒APP的需求,我们通常只能使用scheme.但是这种方式需要提前判断系统中是否安装了能够响应此scheme ...

  2. windows 自动copy远程服务器文件

    net use h: \\123.45.67.000\T1dbbackup 123456/user:administrator ------远程服务器IP123.45.67.000  .T1dbbac ...

  3. first head in html 笔记

    目录: 1.了解HTML 2.学会简单构建网页 3.学会将单个的网页放在web上,组成网站 5.学会使用图片 6.严格HTML规范 7.HTML->XHTML 8.学会一点CSS样式 9.了解盒 ...

  4. MyEclipse怎么导入导出项目

    MyEclipse怎么导入导出项目 | 浏览:25271 | 更新:2012-06-06 17:48 1 2 3 4 5 6 7 分步阅读 MyEclipse,是一个十分优秀的功能强大的JavaEE的 ...

  5. Python API快餐教程(1) - 字符串查找API

    字符串处理相关API 字符串是7种序列类型中的一种. 除了序列的操作函数,比如len()来求字符串长度之外,Python还为字符串提供丰富到可以写个编辑器的API. 查找类API 首先,下面的查找AP ...

  6. MySQLzip压缩文件格式安装教程

    MySQL是一个小巧玲珑但功能强大的数据库,目前十分流行.但是官网给出的安装包有两种格式,一个是msi格式,一个是zip格式的.很多人下了zip格式的解压发现没有setup.exe,面对一堆文件一头雾 ...

  7. 使用struts框架后的404错误

    访问jsp界面后出现404错误,我开始以为是因为struts没有配置好,在网上找了很多解决方法, 试了一遍,无效, 最后在参考书上看到“struts2推荐把所有的视图界面存放在WEB-INF目录下,这 ...

  8. 20155336 2016-2017-2《JAVA程序设计》第九周学习总结

    20155336 2016-2017-2<JAVA程序设计>第九周学习总结 教材学习内容总结 第十六章 JDBC(Java DataBase Connectivity)即java数据库连接 ...

  9. benthos 通过配置文件配置 stream 说明

    stream 模式,我们也可以通过配置文件进行配置 参考配置文件 input: type: http_server buffer: type: memory pipeline: threads: 4 ...

  10. Android已有的原生Camera框架中加入自己的API的实现方案。

    版权声明:本文为CSDN博主(天才2012)原创文章.未经博主同意不得转载. https://blog.csdn.net/gzzaigcn/article/details/25707389     在 ...