什么是details元素的页面对象访问器

时间:2016-02-25 11:59:08

标签: ruby ruby-on-rails-3 watir page-object-gem

我试图使用Watir单击一个元素,但我不确定调用页面对象访问器是什么。我几乎测试了所有这些。

这是点击元素时显示的HTML:

<details open>
    <summary>Search your employers</summary>

如果我还没有点击它,HTML就是:

<details>
    <summary>Search your employers</summary>

我知道如何让脚本点击页面元素,但我不知道如何定义这个页面对象访问器。我猜我会通过调用类似的东西来识别它:

[pageobject](:test, :name => 'Search your employers')

1 个答案:

答案 0 :(得分:1)

您正在寻找的内容实际上称为accessor。页面对象是表示页面的类。访问器是帮助创建与页面上的元素交互的方法的方法。

由于元素是details元素,您希望使用相应的访问器,也称为details。有时候查看source code有助于查看基本元素的访问器没有出现在文档中。

根据您提供的内容,您的页面对象和访问者可以定义为:

class MyPage
  include PageObject

  details(:test, text: 'Search your employers')
end

但是,这假设details元素的文本正好是“搜索您的雇主”。这不太可能是正确的,因为details元素的要点是要显示/隐藏其他元素。

如果起始文本足够独特,您可以执行以下操作:

details(:test, text: /^Search your employers/)

虽然工作量更大,但我更倾向于更具体,并查找包含具有指定文本的details元素的summary元素。这可以使用block

来完成
details(:test) { summary_element(text: 'Search your employers').parent }

或者使用XPath:

details(:test, xpath: '//details[./summary[text() = "Search your employers"]]')