标签: pageobjects

你能通过site-prism或css选择器找到id,title,link等元素吗?

通过使用site-prism gem进行集成测试,我可以通过引用id或title或link或xpath来查找页面元素,还是只能通过css进行搜索

ruby cucumber capybara pageobjects site-prism

2
推荐指数
1
解决办法
3691
查看次数

如何避免页面对象被弃用的复选框

我从一年开始使用黄瓜,而且几周之后我就在它中添加了page-object-gem.当我执行测试时,我收到消息:

DEPRECATION WARNING
您正在commentPage.rb中调用一个名为checkbox的方法:23:在`delete in delete_comment'中.
此方法在页面对象中不存在,因此它将传递给驱动程序.
此功能将在不久的将来删除.
请更改您的代码以调用正确的页面对象方法.

(我对其他案例也有同样的看法,但这个"琐碎"的例子应该更容易解释)

我试图避免这种情况,但这看起来很复杂.

对于测试,我正在检查一个页面,其中有一个表格.每行显示一行,我需要检查特定行的复选框.

我在pageObject中的代码:

table(:comment_list, :class => 'comments')
button(:delete, :text => "Delete")

def delete_comment (text)
  self.comment_list_element.each do |row|
    if row.text.include? "#{text}"
      row.checkbox.set
      self.delete
      return true
    end
  end
  false
end
Run Code Online (Sandbox Code Playgroud)

我是否需要对我的桌子进行预处理以在测试期间使用它?

watir watir-webdriver pageobjects page-object-gem

2
推荐指数
1
解决办法
1220
查看次数

硒中的组件对象而不是页面对象

页面对象是基于硒的测试中最受欢迎的模式之一。不幸的是,如果我们照原样使用它,我们经常需要复制代码。请考虑以下情况:

  • 我们使用带有通用组件的UI框架,说一些花式表
  • 表相当复杂,具有过滤,排序,搜索
  • 该表在应用程序的多个页面上使用

是否存在任何现有的基础结构来创建更细粒度的组件对象,而不是硒中或第三方中的页面对象?我的意思是注释和相关的基础架构?

selenium pageobjects selenium-webdriver

2
推荐指数
2
解决办法
1534
查看次数

量角器-页面对象:失败:不是函数

我正在使用量角器,并创建了一个页面对象。

这是我的页面对象:

'use strict';

var CreateAgent = function () {
this.agentEmail = element(by.model('agent.email'));
this.janrainConsoleAgent = by.xpath(".//*[@value='ccp_agent']");
this.janrainConsoleAgentManager = by.xpath(".//* .[@value='ccp_agent_manager']");
this.saveButton = by.className('md-primary md-raised md-button md-ink-ripple');

this.addEmail = function(email){
    this.agentEmail.sendKeys(email);
};

this.selectRole = function(role){
    switch(role){
        case 'ccp agent':
            this.janrainConsoleAgent.click();
        case 'ccp agent manager':
            this.janrainConsoleAgentManager.click();
        default:
            break;
    }
};

this.saveAgent = function(){
    this.saveButton.click();
};
};
module.exports = CreateAgent;
Run Code Online (Sandbox Code Playgroud)

该函数正在调用规范

规格如下:

var createAgent = require('../page/create_agent_page');

 describe('Protractor Demo Janrain - Create Agent', function(){

    it('should fill out information to create agent', function(){

      createAgent.addEmail('jburquez+auto001@janrain.com');
      browser.sleep(3000); …
Run Code Online (Sandbox Code Playgroud)

javascript automation pageobjects protractor

2
推荐指数
1
解决办法
2712
查看次数

使用Screenplay模式而不是Page对象有什么优点/缺点?

我在youtube上观看了一个视频,建议使用剧本模式作为使用常用页面对象的替代方案.我看到的唯一优势是页面对象类没有那么大.还有其他我想念的东西吗?我一直在搜索,所有网站都在使用serenity bdd参考youtube讲座中的示例.有人可以解释为什么它比使用页面对象更好(或者更糟)?

一个不使用宁静bdd的例子真的很有帮助.

selenium automated-tests cucumber pageobjects serenity-bdd

2
推荐指数
1
解决办法
1559
查看次数

是否有使用 net core 的 PageFactory 替代方案

我正在使用 Selenium v​​3.6.0 和 .NET Core 2.0,以下代码在 PageFactory.InitElements 上给我一个错误,说它在当前上下文中不存在。

using OpenQA.Selenium;
using OpenQA.Selenium.Support.PageObjects;

namespace Example
{
    public class Form
    {
        [FindsBy(How = How.Name, Using = "Filter")] // This does exist in current context using .NET Core
        public IWebElement Filter { get; set; }

        [FindsBy(How = How.TagName, Using = "Button")]
        public IWebElement Button;

        public Form(IWebDriver driver)
        {
            PageFactory.InitElements(driver, this); // This doesn't exist in current context using .NET Core
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我对此有点困惑,因为属性 FindsBy、FindsByAll 和 FindsBySequence 在OpenQa.Selenium.Support.PageObjects命名空间中都可用,但 PageFactory 不是。据我所知,这些属性仅适用于 …

c# selenium pageobjects selenium-webdriver .net-core

2
推荐指数
1
解决办法
9690
查看次数

如何在JBehave的许多PageObjects中使用变量?

例如:

Scenario:
Given the pageOne page
When I get pageOneTitle
And click the first menu item
And I get the pageTwoTitle
Then pageOneTitle is not equals pageTwoTitle
Run Code Online (Sandbox Code Playgroud)

我有两个课程.每页一个.

  • PageOneSteps
  • PageTwoSteps

该场景的前三个步骤在PageOneSteps中,另一个在PageTwoSteps中.这意味着,pageTitleOne保存在PageOneSteps中.验证步骤然后pageOneTitle不等于PageTwoStele中的pageTwoTitle.

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

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

感谢您的支持!

java selenium webdriver jbehave pageobjects

1
推荐指数
1
解决办法
1221
查看次数

Selenium [Java] PageFactory Design:我在哪里编写我的断言遵循页面对象模型

我正在遵循页面对象模型来自动化一个应用程序中的流程。在其中一个模块中,我必须声明页面标题和更多消息。到目前为止,我将我的断言代码放在 PageFactory 本身中,如下所示:

public class EditPost {

    WebDriver driver;

    public EditPost(WebDriver editPostDriver)
    {
        this.driver=editPostDriver;
    }

    @FindBy(how=How.XPATH,using="//*[@id='message']/p")
    WebElement post_published;

    public void assert_message()
    {
        String actual_message_title=post_published.getText();
        Assert.assertEquals(actual_message_title, "Post published. View post");
        System.out.println("Message: Post published, Successfully Verified");
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在从实现 TestNG 的主文件中调用 assert 方法,如下所示:

@Test (priority=5)
public void assert_message()
{
    //Created Page Object using Page Factory
    EditPost edit_post = PageFactory.initElements(driver, EditPost.class);
    edit_post.assert_message();

}
Run Code Online (Sandbox Code Playgroud)

目前,我正在通过 3 个包运行执行。浏览器工厂的“Helper”包,PageFactories 的“Pages”包和测试用例的“Testcase”包。

我的目标是向前迈进,我想重用为所有不同实用程序编写的代码。

我的问题是:

  1. 根据 PageFactory & Page Object Model 的概念,我的方法是否正确?或者我是否需要将断言移动到“Helper”包?或者我应该为断言创建一个单独的库/包?(在接下来的日子里,我可能需要在一个页面上执行多个断言)

  2. 在下一个冲刺中,我可能需要做一些其他的活动,比如对所有/失败的测试用例进行屏幕截图。那么我如何保持我的设计结构和组织,以便我可以以最佳方式重用代码/库/利用它们?

java selenium design-patterns pageobjects

1
推荐指数
1
解决办法
1452
查看次数

如何使用 selenium webdriver 检查按钮是否可点击

我试图找出按钮元素是否可点击,我无法使用 selenium webdriver 成功验证。

这是我验证元素是否可点击的代码

    boolean installAFile;

    String classValues = driver.findElement(by.XPATH("//button[contains(., 'Install a new file')]")).getAttribute("class");
    installAFIle = classValues.contains("iconbutton-button--clickable");

    return installAFIle;
Run Code Online (Sandbox Code Playgroud)

这是 HTML

<div>
<!-- react-text: 406 -->
test message 1
<!-- /react-text -->
<div class="iconbutton">
<button class="iconbutton-button iconbutton-button--clickable" type="button" 
tabindex="0">
<div class="iconbutton-button-label">Install a new file</div>
</button>
</div>
<!-- react-text: 410 -->
under File > Install.
<!-- /react-text -->
</div>
Run Code Online (Sandbox Code Playgroud)

我不断收到以下验证消息: 没有这样的元素:无法定位元素:{"method":"xpath","selector":"//button[contains(., 'Install a new file')]"}

java selenium pageobjects selenium-webdriver

1
推荐指数
1
解决办法
6415
查看次数

Selenium Page对象:为什么要返回此值?

通过阅读SeleniumHQ的pageobject文档,他们指定了从不导航到其他页面的方法返回“ this”的示例。我的问题是为什么?

我以为页面对象的状态可能是一个原因,但是页面本身(实际的UI页面)可能会更改状态或刷新,但页面对象本身不会。Page Factory及其@FindBy批注已经确保了每次调用WebElement时都会找到它,因此在这种情况下元素的状态似乎无关紧要。

selenium pageobjects page-factory

1
推荐指数
1
解决办法
981
查看次数