页面对象 gem:根据可见性识别具有相同属性的对象

2023-12-07

我有一个包含以下 html 的文本框。这id是动态的,我无法使用它。我在文本框中填写了一些文本。<input type="text" id="117841" class="NEdit" title="MyText" maxlength="20" style="position: absolute; overflow: hidden; font-style: normal; font-weight: normal; font-family: arial; font-size: 12px; text-transform: uppercase; width: 184px; left: 28px; top: 0px; height: 14px;">

有一个添加按钮,当我单击时会创建一个新选项卡。在新选项卡中,我将有一个具有与上述相同属性的文本框,除了一个新的id正在创建中。

<input type="text" id="118355" class="NEdit" title="MyText" maxlength="20" style="position: absolute; overflow: hidden; font-style: normal; font-weight: normal; font-family: arial; font-size: 12px; text-transform: uppercase; width: 184px; left: 28px; top: 0px; height: 14px;">

两个文本框都位于同一页面上,但位于不同的选项卡中,其中一个是visible另一个不可见。选项卡显示为 div。选项卡和其中的字段之间没有关系。选项卡如下所示:

<div id="117285" class="NTabTabs" style="position: absolute; overflow: visible; left: 0px; top: 0px; width: 1211px; height: 20px;"><div class="NTabTab" id="117285t0" style="cursor: pointer; position: absolute; overflow: hidden; white-space: pre; text-align: center; left: 2px; top: 2px; width: 101px; height: 16px; padding-top: 1px; border-top-width: 1px; border-top-style: solid; border-left-width: 1px; border-left-style: solid; border-right-width: 1px; border-right-style: solid;">Tab#1</div><div class="NTabActiveTab" id="117285t1" style="cursor: pointer; position: absolute; overflow: visible; white-space: pre; text-align: center; left: 104px; top: 0px; width: 65px; height: 19px; padding-top: 1px; border-top-width: 1px; border-top-style: solid; border-left-width: 1px; border-left-style: solid; border-right-width: 1px; border-right-style: solid;">Tab#2</div></div>

如何根据这些文本框的可见性来识别它们?

谢谢你!


我认为最好的方法是找到两个元素之间的一些区别属性。例如,HTML 中至少必须有某些内容使其中一个可见,而另一个不可见。

但是,如果这不是一种选择,我认为剩下的唯一选择是迭代所有可能的文本字段并采用可见的文本字段。

例如,在以下页面中有两个文本字段,第一个不可见:

<html>
  <body>
    <div style="display:none;">
      <input type="text" id="1">
    </div>
    <div>
      <input type="text" id="2">
    </div>    
  </body>
</html>

您可以使用文本字段访问器来遍历文本字段元素并选择第一个可见的元素。

class MyPage
  include PageObject

  text_field(:field){ text_field_elements.find(&:visible?) }
end

当使用页面对象时,你会看到field_element将是第二个文本字段,因为它是可见的:

page = MyPage.new(browser)
p page.field_element.attribute('id')
#=> "2"

请注意,为了使示例保持简单,访问器的块将迭代所有文本字段。但是,您可以将其他参数传递给text_field_elements更具体地了解要检查哪些文本字段。例如,以下访问器将查找具有特定标题的第一个可见文本字段:

text_field(:text2){ text_field_elements(:title => 'MyText').find(&:visible) }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

页面对象 gem:根据可见性识别具有相同属性的对象 的相关文章

  • 自 iOS6 以来 UINavigationBar 中的标题未对齐

    自从 iOS 6 以来 我在应用程序中使用自定义样式时遇到了一些问题 我使用自定义字体和几种UIAppearance代理 我无法解决的一个问题是 UINavigationBar 中的标题未对齐 在 iOS 5 中 一切工作正常并且正确对齐
  • C++ 模板铸造

    我对如何投射模板有点迷失 我有一个函数 foo 它接受类型的参数ParamVector
  • Go 泛型:无效的复合文字类型 T

    package main import google golang org protobuf proto type NetMessage struct Data byte type Route struct type AbstractPar
  • 初始化 VCProjectEngineObject (Microsoft.VisualStudio.VCProjectEngine.dll) 时出现错误 80040154(类未注册异常)

    我正在尝试跑步this工具 用于将 Visual C 项目转换为 makefile 我尝试转换的项目是用 VS2008 编写的 因此我使用版本 9 中对 Microsoft VisualStudio VCProjectEngine dll
  • Javascript根据另一个数组自定义排序算法

    我有这两个数组 var refArray India Pakistan Nepal Bhutan SreeLanka Singapore Thailand China Russia var beenThere Russia Bhutan I
  • 主函数中的#ifdef _DEBUG

    Does ifdef DEBUG如果我正在工作的话 主函数中的内容有任何意义视觉工作室2013 如果是的话 它的用途是什么 int tmain int argc TCHAR argv ifdef DEBUG creating some ob
  • Cocoon 和 has_one 关联

    我已经在堆栈溢出和谷歌上搜索过 但没有结果 我有一个人有一个近亲 我可以创建一个具有嵌套形式 带有茧 的人 并且它可以完美保存 由于某种原因 当我进入编辑页面时 它会删除关联的 next of kin 记录 它呈现填充有记录数据的字段 但数
  • 有没有一种(合法的)方法可以在 iOS 下捕获整个屏幕?

    我尝试了多种技术来从应用程序内部捕获该应用程序的屏幕截图 这些技术似乎都无法捕获状态栏 它最终变成了黑色 显然曾经有一种方法可以做到这一点 但该界面是内部的 苹果不会让你使用它 有任何想法吗 注意 这是尝试解决这个问题 我需要确定飞行模式是
  • 如何“提取”类型参数来实例化另一个类

    以下 Scala 代码有效 object ReducerTestMain extends App type MapOutput KeyVal String Int def mapFun s String MapOutput KeyVal s
  • 如何使用sklearn改变混淆矩阵中方框的颜色?

    这是我生成混淆矩阵的代码片段 我想知道如何使用 sklearn 更改混淆矩阵中那些不在与热图相同的对角线中的框的颜色 nb classes 15 confusion matrix torch zeros nb classes nb clas
  • 创建变量类型列表

    我正在尝试创建某种类型的列表 我想使用列表表示法 但我只知道 System Type a 的类型是可变的 如何创建变量类型的列表 我想要类似这段代码的东西 public IList createListOfMyType Type myTyp
  • 如何在 awk 中转义单引号

    我想做以下事情 awk BEGIN FS printf s 1 但是用这种方式转义单引号是行不通的 awk BEGIN FS printf s 1 这个怎么做 感谢帮助 这可能是您正在寻找的 awk BEGIN FS printf s 1
  • 正则表达式转义双引号内的双引号

    我有一个需要解析为 JSON 的字符串 问题是 它有时可能包含双引号 导致解析错误 例如 id clients 58844 id clients name 100 test qw 我需要一个正则表达式来替换开头和结尾之间的任何双引号 wit

随机推荐