Ruby on rails 用watir获得价值

Ruby on rails 用watir获得价值,ruby-on-rails,ruby,watir,watir-webdriver,Ruby On Rails,Ruby,Watir,Watir Webdriver,我正在尝试获取第一个textarea元素的值。我尝试使用此代码,但每次都出现错误。我找不到解决问题的方法,尽管我在网上读了很多文档 browser.div(:class => "tabbertab").text_field(:id=>"ic0-3316955").value <div class="tabbertab " title=""> <h2> <textarea id="ic0-3316955" onfocus="

我正在尝试获取第一个textarea元素的值。我尝试使用此代码,但每次都出现错误。我找不到解决问题的方法,尽管我在网上读了很多文档

browser.div(:class => "tabbertab").text_field(:id=>"ic0-3316955").value

<div class="tabbertab " title="">
    <h2>
           <textarea id="ic0-3316955" onfocus="copy(this);" rows="3" style="width:98%;">
        http://xxxx.org/nwqqy7ilwqdo
    </textarea>
    <div id="c0-3316955" class="btndiv">
        copy
    </div>
</div>
<div class="tabbertab tabbertabhide" title="">
    <h2>
        Link for forums
    </h2>
    <textarea id="ic1-3316955" onfocus="copy(this);" rows="3" style="width:98%;">
        [URL=http://xxxx.org/nwqqy7ilwqdo]para.mp4 - 7…
    </textarea>
错误:

/home/zyriuse/.rvm/gems/ruby-1.9.3-p484/gems/watir-webdriver-0.6.11/lib/watir-webdriver/elements/element.rb:513:在“assert_exists”中:无法找到元素,使用{:class=>tabbertabab,:tag_name=>div}watir::Exception::UnknownObjectException


你应该能够简单地打字

browser.textarea(:id, "ic1-3316955").value
获取该文本区域中包含的文本。另外,请注意,Watir Webdriver的最新版本希望您对textarea标记使用textarea而不是text_字段。在将来的某个时候,将不推荐对textarea使用text_字段的功能

然而,我只是使用您的代码创建了一个快速网页,并且能够让您的Watir命令和我的命令生成相同的结果:

irb(main):006:0> browser.div(:class => "tabbertab").text_field(:id=>"ic0-3316955").value
=> "        http://xxxx.org/nwqqy7ilwqdo\n    "

irb(main):007:0> browser.textarea(:id=>"ic0-3316955").value
=> "        http://xxxx.org/nwqqy7ilwqdo\n    "

因此,虽然我认为我的解决方案比您最初的尝试更简洁、更直接,但我不确定您的努力为什么会失败,因为它确实对我有效。

对于您必须使用的最后一个元素

browser.textarea(:index,4).value

如果您有任何值,请更改数字“4”。

嘿,为了检索文本字段的值,您可以使用以下方法检索它

getContents
for Example
@ie.text_field(:id,'sample').getContents
will return the value of the textfield. 

根据您的错误,无法找到页面元素。文本区域是动态加载还是在一个框架中?此外,class属性中还有一个尾随空格:@orde可能在某个地方。你的HTML还有更多内容吗?如果上面的代码在一个iframe中,那么您必须考虑:browser.iframe:id,some_id.textarea。。。。或者,如果在不同的时间加载内容,您可能需要一个。等待,直到出现。有趣的是,类名称中的尾随空格似乎被Watir忽略。要获取第一个值,我需要执行browser.textarea.value,但如何获取最后一个值?与第一个值类似。如果HTML元素有id,请始终使用该id,因为id在页面上是唯一的。因此browser.textarea:id,ic1-3316955.value将为您提供第二个textarea中包含的值。对于您在问题中提供的代码,您需要:index,1。但我建议按照我在回答下面的评论中描述的那样锁定id。使用id快速构造Watir命令要容易得多。另外,如果我的答案对您有效,您能接受吗?谢谢