Ruby 访问a<;p>;在瓦蒂尔,它不';没有属性

Ruby 访问a<;p>;在瓦蒂尔,它不';没有属性,ruby,cucumber,watir,Ruby,Cucumber,Watir,我有这个html代码 <div class="main" data-reactid=".0.2.1.1"> <div contenteditable="true" data-reactid=".0.2.1.1.0" autocomplete="off"> <p> <br> </p> </div> </div> 我得用标签写。为此,我写道: 段落(:article\

我有这个html代码

<div class="main" data-reactid=".0.2.1.1">
  <div contenteditable="true" data-reactid=".0.2.1.1.0" autocomplete="off">
    <p>
       <br>
    </p>
  </div>
</div>



我得用标签写。为此,我写道:

段落(:article\u title){div\u元素(:class=>main').div(:index=>1)。段落(:index=>1)}


但这是一个错误。我不明白这是怎么回事。

有几个问题:

  • Watir使用基于0的索引。因此,
    div(:index=>1)
    实际上意味着查找第二个div标记。由于这不存在,您将得到一个无法定位元素错误
  • div
    段落
    不是页面对象gem中定义的方法。当您尝试使用它们时,将出现弃用错误。它应该分别是
    div\u元素
    段落元素
  • 试着做:

    段落(:article\u title){div\u元素(:class=>main')。div\u元素(:index=>0)。段落元素(:index=>0)}

    更简单地说,因为
    :index=>0
    意味着:

    段落(:article\u title){div\u元素(:class=>main').div\u元素.paragration\u元素}

    由于只有一个段落元素,您可以进一步将其简化为:

    paragraph(:article_title) {div_element(:class=>'main').paragraph_element}
    

    如果您与他人分享您遇到的错误,这会有所帮助。只有一个
    。所以不应该在
    索引=>0
    ?。在第一个例子中,用它写文本也不起作用。我尝试了
    self.idea\u title\u element=“Hello World”
    self.idea\u title=“Hello World”
    对不起,是的,应该是
    :index=>0
    (已修复)。访问器不会创建任何方法来设置
    div
    p
    标记的值。您可能需要执行
    self.idea\u title\u元素。发送密钥(“Hello World”)
    。我相信在本例中,您实际上希望以
    div
    为目标,而不是
    p
    标记(因为
    div
    是具有
    contenteditable
    属性的标记)。但是在另一个类中,在
    文本字段(:username,:id=>“username”)
    中,我没有使用
    发送密钥。我使用了self.username=“auto\u user”
    。那为什么不在这里呢?