草庐IT

PageObjects

全部标签

ruby - 页面对象模型 : why not include assertions in page methods?

第一张海报。我从事UI自动化工作多年,但直到最近才被介绍/受命使用页面对象模型。其中大部分是常识,包括我已经使用过的技术,但有一个特别好的地方我无法在自己的脑海中证明,尽管广泛搜索了合理的解释。我希望这里有人能启发我,因为这个问题在我尝试将POM与我自己的最佳实践集成时引起了一些惊愕。来自http://code.google.com/p/selenium/wiki/PageObjects:Thecodepresentedaboveshowsanimportantpoint:thetests,notthePageObjects,shouldberesponsibleformakingas

javascript - 结合 Galen 和 Protractor 框架

故事我们一直在广泛使用Protractor框架,并建立了相当大的测试代码库。我们也一直在关注PageObjectpattern组织我们的测试。最近,我们开始使用Galenframework填补视觉/布局/响应式设计测试的空白。我们真的很喜欢这个框架,并希望继续更多地使用它。目前最大的问题是页面对象。这两个框架都有自己定义页面对象的方式。这是一个Protractor页面对象示例:varLoginPage=function(){this.username=element(by.id("username"));this.password=element(by.id("password"));

javascript - 在 Protractor 中定义页面对象的规范方法

我们一直在使用PageObjectpattern有一会儿。它绝对有助于组织端到端测试,并使测试更具可读性和简洁性。作为UsingPageObjectstoOrganizeTestsProtractor文档页面向我们展示,我们将每个页面对象定义为一个函数,并使用new来“实例化”它:"usestrict";varHeaderPage=function(){this.logo=element(by.css("div.navbar-headerimg"));}module.exports=HeaderPage;用法:"usestrict";varHeaderPage=require("./.

javascript - 多个浏览器和页面对象模式

我们正在使用页面对象模式来组织我们内部的AngularJS应用程序测试。这是我们拥有的示例页面对象:varLoginPage=function(){this.username=element(by.id("username"));this.password=element(by.id("password"));this.loginButton=element(by.id("submit"));}module.exports=LoginPage;在单浏览器测试中,很清楚如何使用它:varLoginPage=require("./../po/login.po.js");describe("

javascript - Protractor 中的嵌套页面对象

问题:在Protractor中定义嵌套页面对象的规范方法是什么?用例:我们有一个复杂的页面,由多个部分组成:过滤面板、网格、摘要部分、一侧的控制面板。将所有元素和方法定义放入单个文件和单个页面对象中是行不通的,也无法扩展——它变得一团糟,难以维护。 最佳答案 当涉及到页面对象以及如何维护它们时,这更像是一个一般性的话题。前段时间我偶然发现了一种我喜欢的页面对象设计模式技术,它对我来说很有意义。与其在父页面对象中实例化子页面对象,不如遵循javascript的原型(prototype)继承概念。这有很多好处,但首先让我展示一下我们如何

java - 使用 Java 在 Selenium WebDriver 中使用 PageObjects、Page Factory 和 WebDriverWait

我一直在使用SeleniumWebDriver为我参与的一些项目实现功能测试。我正在尝试将页面对象设计模式与页面工厂一起使用来分解我的定位器。我还创建了一个静态WaitTool对象(单例),它使用可选的超时参数实现了多种等待技术。我当前的问题是我想在PageFactory尝试初始化WebElements之前使用我的等待方法。我想等待的原因是PageFactory可能会在页面元素可用之前尝试初始化页面元素。这是一个示例PageObject:publicclassSignInPageextendsPageBase{@FindBy(id="username")@CacheLookuppriv

java - Selenium 网络驱动程序 : Page factory initialization using paths relative to other elements?

我正在尝试使用页面工厂@FindBy注释在SeleniumWebdriver中编写一个页面对象。页面对象用于侧边栏,包含页面对象需要与之交互的所有元素的父WebElement以这种方式初始化:@FindBy(xpath="//div[contains(@class,'yui3-accordion-panel-content')andchild::div[.='Sidebar']]")WebElementsidebar;然后我想要相对于此sidebar元素的搜索输入。有没有办法引用sidebar元素?我可以将整个路径复制并粘贴到开头:@FindBy(xpath="//div[contai

javascript - JavaScript 是否与严格的页面对象模式兼容?

我使用Java的页面对象模式(https://code.google.com/p/selenium/wiki/PageObjects)构建了各种测试自动化框架。我发现的两大好处是:1)当你有一个页面实例时,你可以看到哪些方法可用(例如输入主页。将显示你可以从主页调用的所有操作/方法)2)因为导航方法(例如goToHomepage())返回后续页面(例如主页)的实例,您只需编写代码并查看它会将您带到何处即可在测试中导航。例如WelcomePagewelcomePage=loginPage.loginWithValidUser(validUser);PaymentsPagepayments

java - Streaming 的多项操作能否打破 Demeter 法则?

我有点想用Java8流编写Selenium页面对象,如下面的代码所述,并收到评论说我的代码违反了Demeter法则,因为我在一行中执行了很多操作。我被建议将代码分解为第一个流以收集列表并运行另一个流操作来进行匹配(简而言之,根据需要将其分解为多个流)。我不相信,因为引入Stream是为了处理数据处理,如果我们将它分解成多个流,那么使用流就没有意义了。之前我曾在一个网络安全项目中工作,其中数百万条记录通过流式处理和多个逻辑操作对数据进行排序。请分享您的想法,我已按照审阅者的建议对其进行了更改,但他无法解释原因,我想了解有关流的更多信息以及利用Java8的这一强大新增功能的正确方法。示例代

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

只要我使用PageObject模式,我就想知道我应该在哪里等待动态页面上的元素。假设我们有测试方法和pageObject类。我应该做类似的事情吗(在测试方法中):点击按钮等待元素显示验证元素(包含例如方法isElementDisplayed())或者也许还有其他好的做法来等待元素?也许我们应该在PageObject.class的isElementDisplayed方法中等待元素? 最佳答案 您应该等待页面对象类中的元素,而不是测试类中的元素,因为您的元素应该在页面对象类中定义,测试类应该对任何元素、选择器或类似元素一无所知。测试,恕
12