`
congpeixue
  • 浏览: 274583 次
  • 性别: Icon_minigender_1
  • 来自: ...
社区版块
存档分类
最新评论

Click framework 的 Page类(三)

阅读更多
导航
页面之间的导航是通过forwards, redirects 及设置页面模板的路径来实现的 。

Forward

为了迁移到另一个页面, 可以通过使用Servlet的RequestDispatcher来设置Page的forward属性.

例如通过路径index.htm来迁移到另一个页面。
/**
 * @see Page#onPost()
 */
public void onPost() {
   // Process form post
   ..
   
   setForward("index.htm");
} 
上述代码将调用一个新的映射为路径index.htm的page类。

Note: 当一个请求被定位到另一个页面时, 此时, 位于第二个页面的控件仍未被执行。
这样可以防止混乱和bug。
如:位于第二个页面的一个表单试图提交来自第一个页面的post请求。


传递迁移参数
当你迁移到另一个页面时, 请求参数将被保存。这是一个使用request来传递状态信息的简单方式。
例如你可以通过增加一个用户自定义对象来作为请求参数用于在迁移后的页面上来显示该对象。

public boolean onViewClick() {
   Long id = viewLink.getValueLong();
   Customer customer = CustomerDAO.findByPK(id); 
   
   // Set the customer object as a request parameter
   getContext().setRequestAttribute("customer", customer);
   setForward("view-customer.htm");
   
   return false;
} 

上面的代码片段用于迁移到view-customer.htm

<html>
 <head>
   <title>Customer Details</title>
 </head>
 <body>
   <h1>Customer Details</h1>
   <pre>
     Full Name: $customer.fullName
     Email:     $customer.email
     Telephone: $customer.telephone
    </pre>
  </body>
</html> 


请求属性被自动地添加到Velocity 上下文对象中, 所以在后面的页面模板中请求参数也是可用是。



Page Forwarding
Page Forwarding是页面间传递信息的另一种方式。 在这种情况下, 你使用 createPage() 来创建
迁移用的页面并在Page类中直接设置属性。最后, 你将此Page设置为你将要迁移的页面。例如

public boolean onEditClick() {
   Long id = viewLink.getValueLong();
   Customer customer = CustomerDAO.findByPK(id); 
   
   // Create a new EditPage instance based on the specified path
   EditPage editPage = (EditPage) getContext().createPage("/edit-customer.htm");
   editPage.setCustomer(customer);
   setForward(editPage);
   
   return false;
} 


当用createPage()方法建立一个Page时, 应确保你的页面路径以“/”字符开始。

如果Page的路径唯一, 你也可以使用对应的class来指定目标page。(尽管有些特殊,但有时也可能
会存在多个路径对应一个相同的class, 在这种情况下, 如果你调用Context.createPage ()将会抛
出一个异常, 因为Click不能决定该使用哪个路径)

使用这个技术,如上的代码可以修改为:

public boolean onEditClick() {
   Long id = viewLink.getValueLong();
   Customer customer = CustomerDAO.findByPK(id); 
   
   // Create a new EditPage instance based on its class
   EditPage editPage = (EditPage) getContext().createPage(EditPage.class);
   editPage.setCustomer(customer);
   setForward(editPage);
   
   return false;
}
这种Page forwarding 技术可以提供编译期安全并能让你摆脱代码指定路径的繁琐。











分享到:
评论

相关推荐

    click-book apache click framework介绍

    ### Apache Click Framework 介绍 #### 一、简介 Apache Click 是一个用于开发 Web 应用程序的 Java 框架,旨在提供一个简洁且高效的 API 来构建动态 Web 页面。Click 的设计目标是减少开发时间并提高代码的可读性...

    RobotFramework中实现PageObject模式的轻量级关键字库_Python_RobotFramework.zip

    在Robot Framework中,我们可以创建一个PageObject类,包含页面上的各个元素和相关的关键词。例如,我们可以定义一个`LoginPage`类,包含用户名输入框、密码输入框和登录按钮等元素,并提供`EnterUsername`、`Enter...

    robot framework +selenium

    #### 三、Selenium Library 基础使用 了解了安装步骤后,接下来介绍如何在 Robot Framework 中使用 Selenium Library。 1. **导入 SeleniumLibrary**: - 在 Robot Framework 的测试脚本中,使用 `Library` 关键字...

    RobotFramework-Selenium2Library

    5. **Wait Until Page Contains**:等待页面包含特定文本,例如`Wait Until Page Contains 搜索结果`。 **四、Selenium2Library的优势** 1. **易读性**:Robot Framework的基于关键字的语法使脚本易于阅读和理解,...

    robotframework自动化测试demo实例

    5. **变量**:在示例中,${page title} 和 ${variable_name} 代表变量,Robot Framework支持多种类型的变量,包括全局变量、测试套件变量、测试用例变量等。 6. **数据驱动测试**:Robot Framework支持数据驱动测试...

    robot framework 32bit【32位】

    关键词可以是自定义的,也可以是预先定义的,例如来自内置库或第三方库。 Robot Framework支持多种库,如SeleniumLibrary用于Web应用自动化测试,AppiumLibrary用于移动应用测试,SSHLibrary用于远程服务器操作等。...

    robotframework安装包

    Page Should Contain 欢迎,tester ``` 8. **学习资源**: 要深入了解Robot Framework,可以参考其官方文档,以及各种在线教程和社区讨论。同时,熟悉Python基础和测试驱动开发概念会帮助你更好地运用这个框架。...

    RobotFramework Tool

    Should Contain ${PAGE TITLE} Robot Framework - Google Search ``` 这段脚本中,`Open Browser`、`Input Text`、`Click Button`和`Should Contain`都是关键词,它们对应了打开浏览器、输入文本、点击按钮和验证...

    Python库 | robotframework_browser-2.4.1-py3-none-any.whl

    Wait Until Page Contains Example Domain Click Element xpath://a[@href='/'] Sleep 2s # 给页面加载时间 Close Browser ``` 6. **最佳实践** - 使用变量存储重复使用的URL和元素选择器,提高代码可读性...

    robotframework-selenium2library-1.8.0

    Robot Framework Selenium2Library 1.8.0 是一个专门用于自动化Web应用程序测试的库,它建立在Robot Framework之上,利用Selenium 2 (现称为Selenium WebDriver) 的功能。Robot Framework是一个通用的自动化框架,而...

    WPF多页面Page导航实例

    首先,让我们深入了解WPF的Page类。Page是WPF中的一个用户界面元素,可以视为应用程序中的一个独立视图或“页面”。每个Page可以包含各种控件、布局容器和其他UI元素,用于展示不同的内容或功能。在WPF中,Page通常...

    Robot Framework-Selenium2Library 常用关键字

    在 Robot Framework 的 Selenium2Library 中,管理和控制浏览器及窗口是自动化测试中的基础操作。 3.3.2 Cookie管理 Cookie 是一种用于存储用户状态的小型文本数据,常用于网站的身份验证和个性化设置。在 Selenium...

    Apache Click User Guide

    - **页面类**:讨论了 Apache Click 中页面类的设计原则及其实现细节。 - **页面执行**:解释了页面的执行过程,包括页面加载、处理用户输入及渲染结果等步骤。 - **请求参数自动绑定**:描述了如何自动将请求参数...

    RobotFramework-Selenium2Library中文版_V1.1.pdf

    - **ClickButton/ClickElement/ClickElementAtCoordinates/ClickImage/ClickLink** (P16-17): 执行各种点击操作。 - **CloseAllBrowsers/CloseBrowsers/CloseWindow** (P17-18): 关闭浏览器窗口的操作。 - **...

    robotframework-zoomba:扩展的Robot Framework库使测试GUI,RESTSOAP API,Mobile和Windows Desktop更加容易

    RobotFramework-Zoomba 介绍 Robotframework-Zoomba是使用跨越GUI,REST API,SOAP API,移动和Windows桌面(WinAppDriver)自动化的库的集合。 这些库是现有库 , , 和。...Click Element locator

    RobotFramework常见语法.pdf

    4. **截屏 (Capture Page Screenshot)**:这个关键字用于捕获当前页面的屏幕快照,可用于测试失败时的调试。 5. **执⾏JS (Execute JavaScript)**:允许执行JavaScript代码,通常用于与页面上的JavaScript元素进行...

    基于Robot-Framework+Selenium2用户操作手册

    Wait Until Page Contains Welcome back, admin Close All Browsers ``` 通过以上介绍,您可以根据自己的需求选择合适的元素定位策略和Selenium2Library关键词来构建自动化测试脚本。此外,还提供了数据库操作的...

    auto_framework_demo_screenshot.zip

    这个压缩包可能是某个教程或项目的截图,用于展示如何构建和使用Page Object Model (POM) 模式来设计自动化测试框架。下面我们将深入探讨Python和Selenium框架设计以及POM模式。 Python是一种广泛使用的编程语言,...

    Robot+Framework+WD+培训-吴穹++ChinaTest2012.pdf

    2. **元素操作**:使用关键词如`Open Browser`启动浏览器,`Go To`导航到URL,`Click Element`点击页面元素,`Input Text`输入文本等。 3. **等待和断言**:`Wait Until Page Contains`确保页面元素出现,`Should Be...

    使用RobotFramework测试AJAX

    在自动化测试领域,使用Robot Framework进行AJAX应用的测试需要特别的策略,因为Robot Framework的Selenium库默认假设点击事件会导致页面重载。本文将详细介绍如何利用Robot Framework有效地测试使用AJAX技术的Web...

Global site tag (gtag.js) - Google Analytics