文档帮助

术语、图标和标签

许多类在使用配置对象创建(实例化)类时使用快捷名称。快捷名称称为 别名(如果类扩展了 Ext.Component,则称为 xtype)。别名/xtype 列在适用类的类名旁边,供快速参考。

访问级别

框架类或其成员可以指定为 privateprotected。否则,类/成员是 publicPublicprotectedprivate 是访问描述符,用于传达应如何以及何时使用类或类成员。

成员类型

成员语法

下面是一个示例类成员,我们可以对其进行剖析,以展示类成员的语法(在本例中,是从 Ext.button.Button 类查看的 lookupComponent 方法)。

让我们看一下成员行的每个部分

  • 展开/折叠 - 在成员行的左侧是一个控件,用于展开和折叠每个成员行以显示/隐藏成员详细信息。
  • 成员名称 - 类成员的名称(本例中为 lookupComponent
  • 方法参数 - 方法使用的任何必需或可选参数(或传递给事件处理程序方法的参数)将列在方法名称旁边的括号内(本例中为 ( item )
  • 返回类型 - 方法或属性返回的类实例或 javascript 对象(本例中为 Ext.Component)。对于除了 undefined 以外不返回任何内容的方法,可以省略此项,或者可以显示为由正斜杠 / 分隔的多个可能值,表示返回的内容可能取决于方法调用的结果(即,如果 get 方法调用成功,则方法可能返回 Component,如果失败,则返回 false,这将显示为 Ext.Component/Boolean)。
  • 标志 - 适用于成员的任何标志将显示在旁边(本例中为 PROTECTED - 请参阅下面的标志部分)
  • 成员来源 - 在成员行的右侧是最初描述成员的类(本例中为 Ext.container.Container)。如果成员源自当前类,则源类将显示为蓝色链接,如果成员从祖先类或混合类继承而来,则显示为灰色。
  • 成员源代码 - 在成员来源类右侧下方是一个链接,用于查看成员的源代码(示例中为 查看源代码
  • 参数列表 - 类方法的每个参数将使用上面括号中找到的相同名称、预期的类或对象类型以及参数的描述列出(示例中为 item : Object)。
  • 返回值 - 如果类返回除 undefined 以外的值,则“返回值”部分将注明返回的类或对象类型以及描述(示例中为 Ext.Component
  • Since示例中未显示) - 某些成员将显示成员首次引入的产品版本(例如 自 3.4.0 版本起可用 - 示例中未显示)紧接在成员描述之后
  • Default示例中未显示) - Configs 通常显示要应用于类实例的默认配置值(如果未被覆盖)(例如 默认为:false

成员标志

API 文档使用许多标志来进一步传达类成员的功能和意图。标签可以用文本标签、缩写或图标表示。

  • Required - 实例化类时需要的配置
  • Bindable - 配置具有 setter,允许通过 ViewModel 绑定设置此配置
  • Read Only - 属性可以读取,但不能用于在运行时配置/重新配置类实例
  • Singleton - Singleton 类在定义后立即实例化,不能手动实例化
  • Static - 静态方法或属性是属于类本身的方法或属性,而不是类的实例
  • Chainable - 指的是在调用时返回类实例的方法。
    这使得可以进行链式方法调用,例如:classInstance.method1().method2().etc();
  • Deprecated - 计划在未来框架版本中删除的类或成员,并在当前版本中提供以实现向后兼容性。
    已弃用的类和成员将包含一条消息,指示您将来要使用的首选类/方法。
  • Removed - 已删除的类或成员,仅在文档中作为在框架版本之间升级的用户的参考存在
  • Template - 在基类中定义的方法,旨在由子类覆盖
  • Abstract - 类或成员可以定义为抽象类。抽象类和成员建立类结构并提供有限的(如果有)代码。特定于类的代码将通过子类中的覆盖提供。
  • Preventable - 如果从事件处理程序返回 false,则标记为可阻止的事件将不会触发

类图标

- 表示框架类

- 单例框架类。*有关更多信息,请参阅单例标志

- 组件类型框架类(Ext JS 框架中扩展 Ext.Component 的任何类)

- 表示类、成员或指南在当前查看的版本中是新的

成员图标

- 表示 config 类型的类成员

- 表示 property 类型的类成员

- 表示 method 类型的类成员

- 表示 event 类型的类成员

- 表示 theme variable 类型的类成员

- 表示 theme mixin 类型的类成员

- 表示类、成员或指南在当前查看的版本中是新的

类成员快速导航菜单

在 API 文档页面上类名正下方是一行按钮,对应于当前类拥有的成员类型。每个按钮显示按类型划分的成员计数(此计数在应用过滤器时更新)。单击按钮将导航到该成员部分。将鼠标悬停在成员类型按钮上将显示该类型的所有成员的弹出菜单,以便快速导航。

Getter 和 Setter 方法

与类配置选项相关的 Getter 和 Setter 方法将显示在方法部分以及 API 文档和成员类型菜单的配置部分中,紧挨着它们所作用的配置下方。Getter 和 Setter 方法文档将在配置行中找到,以便于参考。

历史记录栏

您的页面历史记录保存在本地存储中,并在顶部标题栏下方显示(使用可用的实际空间)。默认情况下,显示的唯一搜索结果是与您当前查看的产品/版本匹配的页面。您可以通过单击历史记录栏右侧的 按钮并选择“全部”单选选项来扩展显示的内容。这将显示所有产品/版本在历史记录栏中的所有最近页面。

在历史记录配置菜单中,您还将看到最近访问页面的列表。结果按“当前产品/版本”和“全部”单选选项过滤。单击 按钮将清除历史记录栏以及本地存储中保存的历史记录。

如果在历史记录配置菜单中选择“全部”,则将启用“在历史记录栏中显示产品详细信息”复选框选项。选中后,每个历史页面的产品/版本将与历史记录栏中的页面名称一起显示。将光标悬停在历史记录栏中的页面名称上也会将产品/版本显示为工具提示。

搜索和过滤器

可以使用页面顶部的搜索字段搜索 API 文档和指南。

在 API 文档页面上,还有一个过滤器输入字段,可以使用过滤器字符串过滤成员行。除了按字符串过滤外,您还可以按访问级别、继承和只读过滤类成员。这是通过使用页面顶部的复选框完成的。

API 类导航树底部的复选框过滤类列表,以包含或排除私有类。

单击空的搜索字段将显示您最近的 10 次搜索,以便快速导航。

API 文档类元数据

每个 API 文档页面(JavaScript 原始类型页面除外)都有一个与该类相关的元数据菜单视图。此元数据视图将具有以下一项或多项

  • Alternate Name - 一个或多个附加类名同义词(在 Ext JS 6.0.0 中,Ext.button.Button 类具有 Ext.Button 的备用类名)。通常维护备用类名以实现向后兼容性。
  • Hierarchy - 层次结构视图列出了当前类通过其祖先类直到根基类的继承链。
  • Mixins - 混合到当前类中的类列表
  • Inherited Mixins - 混合到当前类的祖先中的类列表
  • Requires - 实例化类所需定义的所有类
  • Uses - 类在其生命周期中的某个时刻可能使用的类列表,但不一定是类最初实例化所必需的
  • Subclasses - 扩展当前类的类

展开和折叠示例和类成员

可运行的示例 (Fiddles) 默认在页面上展开。您可以使用代码块左上角的箭头单独折叠和展开示例代码块。您还可以使用页面右上角的切换按钮切换所有示例的折叠状态。切换所有状态将在页面加载之间记住。

类成员默认在页面上折叠。您可以使用成员行左侧的箭头图标或使用右上角的展开/折叠所有切换按钮全局展开和折叠成员。

桌面 -vs- 移动视图

在较窄的屏幕或浏览器上查看文档将导致针对较小外形尺寸优化的视图。桌面视图和“移动”视图之间的主要区别在于

  • 全局导航将位于左侧菜单中,可通过汉堡菜单图标访问。菜单包含以下内容(在大多数页面上)
    • 当前产品的名称(作为指向产品着陆页的链接)
    • 用于导航回文档主页的 Sencha 图标
    • 产品菜单下拉按钮
    • API 文档和指南的导航树选项卡
  • 当前上下文导航和工具位于右侧,可通过齿轮图标访问。上下文菜单包含以下内容
    • 全局搜索输入字段
    • (API 文档) 带有成员过滤器、“展开/折叠所有示例”按钮、“展开/折叠所有成员行”按钮、访问级别过滤器复选框以及每个成员计数的“过滤器”选项卡
    • (API 文档) 包含与当前类相关的元数据菜单的“相关类”选项卡
    • (指南) 指南的目录

查看类源代码

可以通过单击 API 文档页面顶部的类名来查看类源代码。可以通过单击成员行右侧的“查看源代码”链接来查看类成员的源代码。

WebTestIt


顶部

使用 Sencha WebTestIt 管理页面对象

Sencha WebTestIt 为您提供了强大的页面对象创建和管理工具。您可以使用元素直接在 Sencha WebTestIt 中生成页面对象操作。使用页面对象模式,您可以将 Web 应用程序的行为建模为简单的对象,并执行页面对象操作,例如“单击”、“sendKeys”等,以构建逻辑用户交互。

提示

尽管名称如此,页面对象模式不一定对应于网站或应用程序上的整个“页面”,而是对应于页面上的重要组件,例如标题、菜单或内容区域。创建页面对象时,请为每个组件创建一个单独的页面对象,而不是为整个页面或多个页面创建一个。

创建页面对象

页面对象是项目中的一个类,其中包含元素和一组利用这些元素的操作。要创建新的页面对象,请右键单击项目选项卡中的 test/pageobjects 文件夹,然后从上下文菜单中选择新建 > 页面对象

注意

虽然我们建议保留默认项目结构,但您可以在任何喜欢的文件夹中创建页面对象,只要您保留 特殊标头

或者,您可以使用键盘快捷键 Ctrl+N > Ctrl+P。Sencha WebTestIt 将创建一个新的页面对象文件,并等待您命名它。单击ENTER 创建新类。

提示

最佳实践是创建以 Po 作为后缀的页面对象类,例如 Java 和 Typescript 中的 DetailPagePo 或 Python 中的 detail_page_po

每个页面对象都使用默认函数 opengetTitle 生成,这些函数派生自模板系统。

您在项目选项卡中选择的页面对象将成为活动页面对象。Sencha WebTestIt 会根据当前活动的页面对象类调整用户界面并在各种选项卡中显示信息。

页面对象选项卡

当您从项目选项卡中选择页面对象时,Sencha WebTestIt 将打开页面对象选项卡。您可以使用页面对象选项卡导航活动页面对象中的操作。

1 页面对象名称:显示当前活动页面对象的名称。

2 操作列表:显示页面对象的公共方法及其返回值。右键单击操作的名称,然后选择跳转到代码位置以直接滚动到代码编辑器中的定义

创建页面对象操作

要快速创建页面对象操作,您可以使用 Sencha WebTestIt 模板。

  1. 在活动页面对象中,找到元素选项卡。

  2. 将要作为操作基础的元素拖到代码选项卡中。

  3. 在要插入新方法的位置释放鼠标。

  4. 从弹出菜单中,选择要使方法基于的操作。

  5. Sencha WebTestIt 将创建一个反映操作的方法。

  6. 您可以继续自由编辑操作,或将更多元素拖到新生成的方法中。

感谢此功能,您可以节省在定义页面对象时必须编写的代码量。Sencha WebTestIt 为您提供了一组开箱即用的操作,它是 Selenium IDE 中使用的 Selenese 命令的子集,以帮助测试各种元素、操作和与 Web 应用程序相关的许多其他功能。

操作

操作是与网站或应用程序中的元素交互的简单起点。以下操作可从 Sencha WebTestIt 中的弹出菜单中使用

执行

名称 描述
单击元素 标准的 Selenium click() 元素方法,用于对给定元素执行单击操作。
双击元素 从 Selenium Actions() 类中的给定元素调用鼠标 doubleclick() 方法。
输入元素 调用 sendKeys(text) 方法,允许您发送输入字符串以模拟在元素中键入。
清除并输入元素 首先调用 clear() 方法,该方法清除输入字段。
然后是 sendKeys(text) 方法,该方法将输入字符串发送到元素并模拟在元素中键入。
悬停在元素上方 将鼠标光标移动到给定元素的中心,模拟悬停在元素上方的操作。
提交表单 如果给定元素是表单或表单内的元素,则执行提交到远程服务器操作。
切换到 iframe 元素 允许用户切换到位于 iframe 中的元素,并在位于该 iframe 内的元素上执行操作。
滚动到元素 允许用户将指定的元素滚动到浏览器窗口的可见区域。
带偏移量滚动到元素 滚动到目标元素,并额外滚动给定为偏移坐标 (x, y) 的像素数。
请注意,负值表示向左 (-x) 或向上 (-y)。

执行鼠标操作

名称 描述
按下 模拟鼠标单击并按住操作。
将鼠标光标移动到给定元素的中心,并执行单击并按住(不释放)鼠标左键。
抬起 模拟在给定元素中间释放单击的鼠标按钮。
移动 将鼠标光标移动到给定元素的中心。
悬停 通过将鼠标光标移动到给定元素上方来模拟 mouseover 事件。
移出 通过给定的偏移量将鼠标光标从当前 (X, Y) 位置移开到所需位置。

按索引元素

如果将鼠标悬停在按索引元素弹出菜单条目上,您会找到一组基于枚举器的操作。这些操作生成专门针对列表和其他类似元素集合的方法。

注意

基于枚举器的元素的示例是 Demo Webshop 中的产品列表,您可以下载 JavaTypeScript 版本。每个产品都显示为自己的组件,并且项目数量是可变的。在这些情况下,基于 ID 的选择器通常不可行。

名称 描述
单击第 n 个元素 单击列表中的第 n 个项目。
存储所有找到的元素,并使用元素的索引单击列表中选定的元素。
获取第 n 个元素 从 WebElement 列表中返回第 n 个项目。
创建 Web 元素列表,并使用元素的索引从列表中选择并返回元素。
获取第 n 个元素的文本 从列表中返回第 n 个项目的文本。
创建 Web 元素列表,并使用元素的索引从列表中返回选定元素的文本。

Sencha WebTestIt 中引入了 Get/Is/Is not 命令,而不是 Selenese 中常见的 AssertVerify 命令,以获取要检查的数据,例如元素的 value、text、attribute 等。使用这些新命令,获取的数据将与测试分离,这是使用页面对象时推荐的做法。这意味着页面对象包含 Get/It/Is not 命令来获取数据,而测试验证数据。

获取

名称 描述
元素作为变量 将选定的元素作为 WebElement 返回,以便您可以向其添加自定义操作和方法。
元素的文本 使用 .getText() 方法返回包含可见元素内部文本的字符串。
元素的值 使用 getAttribute("value") 方法返回“elements”的 value 属性。
元素的属性 使您可以使用 getAttribute() 方法检索特定的元素属性,例如 value、type 等。
元素选定的值 从给定的(“select”类型)元素(例如,选择列表)返回第一个选定的选项。
如果 WebElement 不是“select”类型,则会抛出异常。
元素选定的标签 使用 Selenium Select() 类返回一个字符串,其中包含给定“select”类型元素(例如,选择列表)中第一个选定选项的标签(文本)。
如果 WebElement 不是“select”类型,则会抛出异常。

名称 描述
元素已选中 确定给定元素是否已选中。返回布尔值。
仅适用于输入元素,例如复选框、单选按钮、选择标记中的选项。
元素可编辑 确定给定元素是否可编辑。
在检查元素是否在网页中启用且具有等于 null 的“readonly”属性后,返回布尔值。
元素存在 确定给定元素是否存在于网页上。
在检查找到的具有提供选择器的元素数量是否大于 0 后,返回布尔值。
元素可见 确定给定元素在网页上是否可见。
在使用元素上的 isDisplayed() 方法后返回布尔值。

不是

名称 描述
元素已选中 确定给定元素是否未选中。
返回布尔值。仅适用于输入元素,例如复选框、单选按钮、选择标记中的选项。
元素可编辑 确定给定元素是否不可编辑。
在检查元素是否在网页中禁用且具有不等于 null 的“readonly”属性后,返回布尔值。
元素存在 确定给定元素是否不存在于网页上。
在检查找到的具有提供选择器的元素数量是否等于 0 后,返回布尔值。
元素可见 确定给定元素在网页上是否不可见(是否隐藏)。
在使用元素上的 isDisplayed() 方法后返回布尔值。

组织页面对象

强烈建议在设计测试和页面对象时牢记 测试维护。我们建议您实施 页面对象模式 以保持一切井然有序。

页面对象为您提供了封装特定于您的网站或应用程序的元素和操作的绝佳可能性。如果元素损坏(例如,选择器未返回元素),您可以在相应的页面对象中编辑选择器。您的测试用例负责编排这些操作并评估结果。

这就是为什么最佳实践是将元素保存在其专用页面对象中设为私有的原因。作为测试人员,您只对应该公开访问的操作感兴趣。

重定向和站点更改呢?假设您正在表单上输入数据并将其发送出去,这会导致您的客户端重定向到另一个页面。在这种情况下,适当的操作应返回新的页面对象。

测试所需的页面对象数量很大程度上取决于您的网站或应用程序的结构。我们建议分析整体结构并将您的网站或应用程序分解为组件。然后为您识别的每个组件创建一个页面对象。但是,如果一开始某些东西不完美,请不要担心。始终可以重构您的页面对象。

有关页面对象模式的更多信息,请单击此处

WebTestIt