标签: pageobjects

使用页面对象查找字段集

我正在尝试找到一组复选框,但我需要在字段集中找到它们.html就像这样(它是一个gwt应用程序,因此产生了大量的东西:

<div id="UpdateUserView-RolesColumn">
  <fieldset style="">
    <legend>Primary Role</legend>
    <select class="gwt-ListBox">
      <option value="ROLE_GENERAL_USER">ROLE_GENERAL_USER</option>
      <option value="ROLE_ADMIN">ROLE_ADMIN</option>
    </select>
    </fieldset>
  <fieldset style="" class="createUser-otherRolesFieldset">
    <legend>Other Roles / Permissions</legend>
    <div style="overflow: auto; position: relative; zoom: 1; height: 250px;">
      <div style="position: relative; zoom: 1;">
        <div>
          <span class="gwt-CheckBox">
            <input type="checkbox" value="on" id="gwt-uid-760" tabindex="0" checked="">
            <label for="gwt-uid-760">ROLE_BLAH1_USER</label>
          </span>
          <span class="gwt-CheckBox">
            <input type="checkbox" value="on" id="gwt-uid-761" tabindex="0" checked="">
            <label for="gwt-uid-761">ROLE_BLAH2_USER</label>
          </span>
          <span class="gwt-CheckBox">
            <input type="checkbox" value="on" id="gwt-uid-762" tabindex="0" checked="">
            <label for="gwt-uid-762">ROLE_BLAH3_USER</label>
          </span>
          <span class="gwt-CheckBox">
            <input type="checkbox" value="on" id="gwt-uid-763" tabindex="0" checked="">
            <label for="gwt-uid-763">ROLE_BLAH4_USER</label> …
Run Code Online (Sandbox Code Playgroud)

ruby watir fieldset pageobjects page-object-gem

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

Watir:当网页元素存在时总是等待

用户操作后,Web应用程序始终使用此div.我的测试脚本有这一行.逐字逐句.

@browser.div(:id => 'loading-indicator').wait_while_present
Run Code Online (Sandbox Code Playgroud)

在任何地方明确地包括这条线是可以的,但是丑陋和重复.

使用wait_until_present下一元素(" foo负载指示后"),有时会工作.然而,在某些情况下foo和负载指示同时存在,但foo不是visible?直到负载指示消失.

有没有办法,或许在env.rb,向watir-webdriver表明它应该始终wait_while存在这个元素?

watir cucumber browser-testing watir-webdriver pageobjects

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

使用Page Factory设计模式在Page Object中第二次调用webelement会产生陈旧元素异常

我们有一个带有Page Object和Page Factory设计模式的UI框架.在我的一个Page Object类中,我定义了一个webelement并调用它.在我的测试步骤类中,当这是在一个页面上时,我正在调用此webelement,而当我在另一个页面上时,我再次调用此元素.下面是我的代码的样子

PageObjectClass1:

@FindBy(how=How.XPATH, using="//*[contains(text(),'Successfully')]")
@CacheLookup
public WebElement successMsg;
Run Code Online (Sandbox Code Playgroud)

testStepClass:

//on first page 
PageObjectClass1.successMsg.isDisplayed()

//Then I navigate to some other page and again call this webelement

PageObjectClass1.successMsg.isDisplayed();
Run Code Online (Sandbox Code Playgroud)

在第二次调用它时,webdriver正在给我staleElementException.此xpath是通用xpath,将在每个页面中使用.这肯定存在于DOM中,所以不确定为什么它会给我这个例外?如何在不在每个页面对象类中创建此元素的情况下使用它?

给出的例外情况是:

org.openqa.selenium.StaleElementReferenceException:陈旧元素引用:元素未附加到页面文档

java selenium pageobjects selenium-webdriver staleelementreferenceexception

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

赛普拉斯 POM 方法 | 如何在 Cypress 中读取 POM_Page.js 文件中的灯具数据

我是 cypress 的新手,正在尝试在 POM 上创建框架。

我已按照以下步骤创建框架

  1. 使用名为“locators.json”的文件创建了对象存储库,该文件中的数据如下所示
{
    "RxClaims_LoginPage":
    {
        "UserName":"#f0",
        "Password":"#f1",
        "SignInButton":"#xlg0003"
    }
}
Run Code Online (Sandbox Code Playgroud)
  1. 在 Integration>Examples 下,我创建了名为OR_Approch.js的测试,它看起来像
/// <reference types="Cypress" />

import ORLoginPage from '../PageObjects/OR_Login'

describe('OR_Approach',function(){

    it('RxClaimsLogin', function()  {
        const login = new ORLoginPage();
        cy.visit('/')
        cy.wait(2000)
        login.EnterData_In_UserName()
        login.Password()
        login.SignInButton()
      })

})
Run Code Online (Sandbox Code Playgroud)

3.我在 Integration>POM 下创建了另一个文件夹,其中包含所有 POM - 其中一个名为OR_Login.js看起来像

class ORLoginPage{


    EnterData_In_UserName()
    {
        cy.fixture('example').then(function (dataJson) {
            this.testData = dataJson;
        })
        cy.fixture('locators').then(function (oRdata) {
            this.objRep = oRdata;
        })  
        cy.enterDatainTextBox(this.objRep.RxClaims_LoginPage.UserName,this.testData.UserName)
        return this
    }  
    Password(){
        return 'cy.enterDatainTextBox(this.objRep.RxClaims_LoginPage.Password,this.testData.Password)'
    }
    SignInButton(){ …
Run Code Online (Sandbox Code Playgroud)

javascript pageobjects cypress

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