当前位置: 首页 > news >正文

win8网站模板白云网站制作

win8网站模板,白云网站制作,济南seo顾问,公司国产卡一卡二乱码新区什么是Page Objects(翻译为#xff1a;页面对象#xff1f;)… 简单的说#xff0c;Page Objects是指UI界面上用于与用户进行交互的对象。它可以指整个页面#xff0c;也可以指Page上的某个区域。Page Objects是你的test code的交互对象#xff0c;是对实际UI的一种抽象模…什么是Page Objects(翻译为页面对象)… 简单的说Page Objects是指UI界面上用于与用户进行交互的对象。它可以指整个页面也可以指Page上的某个区域。Page Objects是你的test code的交互对象是对实际UI的一种抽象模型化。通过Page Objects可以减少重复代码的编写例如很多页面都有同样的headerfooternavigator等部分如果对这些进行抽象只写一次就可以在其他地方通用了。 注意PageObjects与Page Objects是不一样的PageObjects用于特指采用Page Objects进行封装的一种设计模式Design Pattern,而不仅仅是多一个空格的区别。哈。 如何实现PageObjects设计模式 一般情况下对于一个Page Objects对象它有两个方面的特征 自身元素(WebElement)实现功能 (Services)自身元素很好理解就是实实在在的页面元素。而Page Object通常也都是实现一定的功能的。就Test的开发人员来说更关心的是Page Objects它们实现了什么交互功能而不是其内部的实现因此这里的功能与开发人员理解的功能是不一样的。 以用户登录为例在登录界面点击登录后要么成功转向首页。要么失败出现提示出错信息。 相信这是一个很容易理解的场景吧Java Code可能类似如下 public class LoginPage {//用户名录入框private WebElement usernameBox;//密码录入框private WebElement passwordBox;//提交按钮private WebElement submitButton;public HomePage loginAs(String username, String password) {usernameBox.sendKeys(username);passwordBox.sendKeys(password);submitButton.submit();return new HomePage(...)}public LoginPage loginAsExpectingError(String username, String password) {// 出错的username,password 仍留在LoginPage}public String getErrorMessage() {// 获取错误信息} } 从上面可以看出同时封装了元素以及功能。此处样例元素是没有初始化的。可以通过类似于driver.findElement()的函数来直接进行初始化另外WebDriver提供了一个PageFactory用于对PageObjects设计模式进行支持下面将会讲到。通过上面的这段代码也展现出了一个重要的问题那就是assertion不应该在Page Objects内部而应该由tests进行处理。Page Objects只是返回需要验证的信息即可。 总结 public方法代表Page提供的功能尽量不要暴露Page的内部细节不要assertion方法可以返回其他Page ObjectsPage Objects不用代表整个页面可以是任意一个部分一样的操作不同的结果应该分开正确登录错误登录样例 public class LoginPage {private final WebDriver driver;// 用户名录入框private WebElement usernameBox;// 密码录入框private WebElement passwordBox;// 提交按钮private WebElement submitButton;public LoginPage(WebDriver driver) {this.driver driver;if (!Login.equals(driver.getTitle())) {throw new IllegalStateException(This is not the login page);}this.usernameBox driver.findElement(By.id(username));this.passwordBox driver.findElement(By.id(passwd));this.submitButton driver.findElement(By.id(login));}public HomePage loginAs(String username, String password) {usernameBox.sendKeys(username);passwordBox.sendKeys(password);submitButton.submit();return new HomePage(driver);} }PageFactory 从上面的样例中有没有发现每个元素都要进行driver.findElement()这样的操作写起来好累啊一堆重复性的代码。有没有更好的更优雅的处理方法呢org.openqa.selenium.support.PageFactory就是用来负责处理这个的真Happy! 下面以百度搜索作为样例场景搜索一个关键字 import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.htmlunit.HtmlUnitDriver; import org.openqa.selenium.support.PageFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory;/** * author shenyanchao * */ public class BaiduSearchPage {public static final Logger LOG LoggerFactory.getLogger(BaiduSearchPage.class);private WebElement wd;public void searchFor(String keyword) {wd.sendKeys(keyword);wd.submit();}public static void main(String[] args) {WebDriver driver new HtmlUnitDriver();driver.get(http://www.baidu.com);BaiduSearchPage baiduPage PageFactory.initElements(driver,BaiduSearchPage.class);LOG.info(before search url is:{},driver.getCurrentUrl());baiduPage.searchFor(blueshen);LOG.info(after search url is:{},driver.getCurrentUrl());} }运行以上代码发现已经可以正常运行结果如下 ...... before search url is:http://www.baidu.com/ ...... after search url is:http://www.baidu.com/s?wdblueshenrsv_bp0rsv_spt3可见搜索后已经转向了正确的搜索结果页面。然而WebElement是如何初始化的呢玄机就在BaiduSearchPage baiduPage PageFactory.initElements(driver,BaiduSearchPage.class);这行代码。PageFactory负责初始化了Page里的元素amazing用起来就是这么的优雅。那么下来我就要问了PageFactory是怎么定位元素的呢 原来PageFactory初始化元素有一个惯例样例中将WebElement的名称定为wd,那么PageFactory将按类似以下的形式对其进行初始化 driver.findElement(By.id(wd));PageFactory认为wd是HTML元素的id或者name字段的值,并且优先从id开始查找。至此我们终于知道怎么回事了。 随着项目的变大以及使用的更加深入HTML元素的idname字段并不一定唯一并且java Class的属性看起来都是一堆无意义的名称。这些要求我们必须要进行改进。幸好PageFactory已经提前考虑到了这一切它支持annotations来显式定位元素。那么上述的百度搜索样例可以修改为如下形式 public class BaiduSearchPage {public static final Logger LOG LoggerFactory.getLogger(BaiduSearchPage.class);FindBy(how How.NAME, using wd)CacheLookupprivate WebElement serachBox;public void searchFor(String keyword) {serachBox.sendKeys(keyword);serachBox.submit();} ...... }明确的指定HOW.NAME,using”wd”,意为查找name”wd”的元素并将其初始化赋值给searchBox这一有意义的属性名。其中CacheLookup用于标识其只初始化一次然后缓存起来备用。 感觉还不够简洁吗继续修改 FindBy(name wd) private WebElement searchBox;这是其简略模式还支持各种定位方式。 FindBy(id...)FindBy(className...)FindBy(name...)FindBy(xpath...)FindBy(linkText...)FindBy(partialLinkText...)FindBy(tagName...)FindBy(css...)同时支持FindBys用于支持列表元素查找定位返回ListWebElement类型。 总之利用PageObjects设计模式并且配合PageFactory使用将使你的自动化测试优雅、易懂、易维护。转载于:https://www.cnblogs.com/111testing/p/7198372.html
http://www.huolong8.cn/news/187980/

相关文章:

  • 制作网站心得用PYTHON3 做网站
  • 个人网站服务器租用成都网站空间
  • 吴江城乡建设局网站主题资源网站建设模块五作业
  • 做网站的公司现在还 赚钱吗6厦门企业app开发
  • 中国建设部网站失信名单网站建设 豫icp备
  • 网页开发网站域名邮箱 400电话
  • 万由nas做网站swf网站cms
  • 教育培训网站排名成都专做婚介网站的公司
  • 德州建设网站公司wordpress 画图插件
  • 网站建设所需材料网站建设分析图
  • 甘肃省住房建设厅网站中国还有多少人没有打新冠疫苗
  • 北京做网站要多少钱长沙本地论坛有哪些
  • 关于网站开发人员的薪资宝塔自助建站系统源码
  • 广西注册公司网站如何在微信公众号里建设微网站
  • 手机里面的网站怎么制作网站为什么做静态
  • 怎么把网站上传到空间做鞋子有什么好网站
  • 微信做一元云购网站大航母网站建设怎么样
  • 音乐网站建设论文数据网站建设工具模板
  • 织梦网站登录市场营销策略是什么
  • 临沂市住房和城乡建设厅网站抖音logo在线设计生成器免费
  • 中山建网站价格河南网站建设哪家公司好
  • 如何做网站推广广告网站曝光率
  • 南阳网站seo设计网页的快捷网站
  • 做网站属于什么专业做微商有哪些网站可以免费宣传
  • 网站开发做网站高端网站建设需要多少钱
  • 怎么用ftp修改网站图片网站更换域名注意事项
  • wordpress 多站点建站教程顺平网站建设
  • 网站建设的简要任务执行书网站怎么做全屏的
  • 自己的网站做怎样的优化调整长沙水业网站是哪家公司做的
  • 网站建设行业新闻手机网站的视频怎么才能下载