问题标签 [pageobjects]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
25921 浏览

java - 等待元素 - WebDriver - PageObject 模式

只要我使用 PageObject 模式,我就想知道我应该在哪里等待动态页面上的元素。假设我们有测试方法和 pageObject 类。我应该做类似的事情(在测试方法中):

  1. 点击按钮
  2. 等待元素显示
  3. 验证元素(包含例如方法 isElementDisplayed())

或者也许还有其他好的做法来等待元素?也许我们应该等待 PageObject.class 中 isElementDisplayed 方法中的元素?

0 投票
1 回答
1323 浏览

jasmine - 自定义匹配器未在星盘/量角器 + 茉莉花测试中断言

我正在使用ProtractorAstrolabe编写一些页面对象驱动的测试。

Jasmine 被用于实现describe/it样式规范。

添加自定义匹配器无法使用this.addMatchers( TypeError: Object #<Object> has no method 'toContainLowered'),因此我使用本指南来实现它们。

它似乎正在工作,直到我仔细查看测试运行的输出:

这是我的代码:

如果我取消注释最后一行并删除toContainLowered匹配器,我会得到正确的输出:

我在调试这个基于 Promise 的代码时遇到了非常困难的时间,并且任何努力都console.log(this.actual.toLowerCase().indexOf(expected) > -1);将打印出来false,这令人困惑。

我什至尝试用 just 替换整个函数定义return false;。仍然没有做任何事情。最后,我尝试不向匹配器传递任何参数,它应该抛出一个无效参数错误或其他东西。

使用 Protractor/Astrolabe 测试时,如何在 Jasmine 中定义自己的匹配器?

0 投票
1 回答
374 浏览

clojure - Clojure 和页面对象模式替代方案

我正在尝试使用 Clojure 编写 Webdriver 检查。如果我使用面向对象的语言,我会使用页面对象模式。我认为将页面建模为对象是有意义的,我可以为页面对象创建一些 java 类,一切都会好起来的。

我想知道是否有任何使用功能样式的页面对象模式的替代方案可以保持相同的清晰度。

0 投票
3 回答
1312 浏览

java - 如何通过 JBehave 在许多 PageObjects 中使用变量?

例如:

我有两个步骤的课程。每页一个。

  • PageOneSteps
  • PageTwoSteps

该方案的前三个步骤在 PageOneSteps 中,另一个在 PageTwoSteps 中。这意味着,pageTitleOne 保存在 PageOneSteps 中。验证步骤Then pageOneTitle is not equals pageTwoTitle is in PageTwoSteps。

如果 pageOneTitle 在 PageOneSteps 中,我如何在 PageTwoSteps 中等于 pageOneTitle 和 pageTwoTitle?

这是一个非常简单的例子。但我希望它能说明我的意思。

谢谢你的支持!

0 投票
1 回答
3950 浏览

c# - Java Webdriver @Findby 的等效 C# 版本是什么?

我正在从 Java 环境迁移到 .NET,并且需要使用页面对象模型编写 Webdriver 测试。

在 Java 中,我将使用以下注释:

请有人能告诉我如何使用 C# 定义 WebElement 吗?另外,PageFactory.initElements 的使用方式是否相同?

谢谢史蒂夫

0 投票
1 回答
246 浏览

selenium - 如何从中提取文本使用 Selenium 页面对象标记?

如何使用 Selenium pageobject 从标签中提取文本?

这是html代码:

我正在尝试从输入标签中提取文本:input class="account-input" value="" disabled="",文本(“account one”)在 GUI 上可见。

这就是我定义页面对象的方式:

我尝试过使用 reply_account_element.getText()、.getValue()、.getAttribute(),但它们都不起作用。请指教,谢谢!

0 投票
1 回答
2601 浏览

java - 页面对象模型中的 WebDriver 显式等待

我们目前有一个使用页面对象模型的大型 selenium junit 项目。我们使用@FindBy注解来声明我们的 WebElements。现在,当我们运行测试时,我们随机得到NoSuchelementException,这意味着页面可能还没有完成加载。我们不想使用隐式等待,因为这不会提供完整的解决方案(一个元素可能存在于 DOM 中但还不能交互)。显式等待可能会解决此问题。但是,我们如何在这个页面模型架构中使用它而不用@FindBy去掉注解呢?以前可能有人问过这个问题,但我似乎还没有找到任何解决方案。

0 投票
1 回答
696 浏览

design-patterns - 使用 Codeception 在测试 REST API 时我对页面对象使用什么

我正在使用 Codeception 为一些 REST API 创建 api 测试。我发现页面对象对编写测试很有帮助,但我应该使用另一个 Codeception 对象吗?

例如,我将用户信息(名字、姓氏、用户 ID ...)放入 UsersPage 页面对象类中,但是当它不代表页面时,它被命名为用户页面,这让我很困扰。我应该使用另一个 Codeception 对象来表示我在测试中使用的可重用信息吗?

0 投票
1 回答
480 浏览

webdriver - 页面对象类有更多方法

我已经为登录页面编写了 Page 对象类来测试 Web、iphone 和平板电脑的 UI 外观。对于每个验证,我都编写了一个方法来返回该元素的 cssValue 或文本。

编写增加了在单个类中定义的 lot 方法。有没有办法减少页面对象类中声明的方法?

例子:

0 投票
1 回答
102 浏览

ruby - 是否可以识别一个只知道其名称的一部分的元素?

我正在尝试识别<div>具有动态生成的 id 的元素。我希望能够使用文本标识符来获取元素。

我不想知道确切的名字是什么。例如,如果有一个 div 标签包含“这是一个 div 文本”,我想用@browser.div(:text => 'div text').