簡體   English   中英

通過使用類別和ID與Watir-WebDriver一起選擇textarea

[英]Select textarea by using the class and ID with Watir-WebDriver

試圖弄清楚如何使用textarea通過指定類和ID來選擇表單上的字段。 不幸的是,由於它是供應商產品,因此我無法控制所生成的HTML。

HTML示例:

<textarea class="text sr " id="arid_WIN_0_636875000" style="left: 402px; top: 0px; width: 261px; height: 21px;" rows="1" cols="20" wrap="off" arautoctt="400" arautocak="0" maxlen="255"></textarea>

我需要同時使用ID和類,因為ID和類都用於多個位置,但是,我發現兩者的組合是唯一的。

我試着做:

z = textarea(:class => "text sr ", :id  => "arid_WIN_0_636875000")

這回來了:

=> #<Watir::TextArea:0x272de17c located=false sel
>"arid_WIN_0_636875000", :tag_name=>"textarea"}>

嘗試設置它,然后返回:

Watir::Exception::UnknownObjectException: unable to locate element, using {:class=>"text sr ", :id=>"arid_WIN_0_636875000", :tag_name=>"textarea"}
from C:/Ruby21/lib/ruby/gems/2.1.0/gems/watir-webdriver-0.7.0/lib/watir-webdriver/elements/element.rb:507:in `assert_exists'
from C:/Ruby21/lib/ruby/gems/2.1.0/gems/watir-webdriver-0.7.0/lib/watir-webdriver/user_editable.rb:32:in `clear'
from C:/Ruby21/lib/ruby/gems/2.1.0/gems/watir-webdriver-0.7.0/lib/watir-webdriver/user_editable.rb:11:in `set'
from (irb):21:in `block in irb_binding'
from C:/Ruby21/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.45.0/lib/selenium/webdriver/common/target_locator.rb:50:in `window'
from C:/Ruby21/lib/ruby/gems/2.1.0/gems/watir-webdriver-0.7.0/lib/watir-webdriver/window.rb:193:in `use'
from (irb):20
from C:/Ruby21/bin/irb:11:in `<main>'

這是彈出窗口的HTML:

<div class="DIVPopup shadow " id="popup_0" style="left: 495px; top: 161.5px; width: 930px; height: 673px; overflow: hidden; visibility: inherit; z-index: 100004;" arwindowid="0"><table class="DIVPopup ResizablePopup" id="DivTable" cellspacing="0" cellpadding="0"><tbody><tr class="DIVPopupTitleBar DIVDraggable"><td class="topleft">&nbsp;</td><td align="left" class="center" id="title_0" nowrap=""><div class="title">Name of form is here&nbsp;&nbsp;&nbsp;</div><button title="Close" class="Close  right" id="ardivpcl" onclick="var target=FindClickedPopup('0', event); if(target){ target.OnCancel();target.stopBubbling(event);return false;}" type="button"></button></td><td class="topright">&nbsp;</td></tr><tr><td class="DIVPopupBodyNoBorder DIVPopupBodyBorder" colspan="3"><iframe id="1433419427651P" src="/arsys/forms/vmpit-ermdy006/NameOfFormIsHere/Administrator/?cacheid=fa90df9&amp;format=html" frameborder="0" style="width: 100%; height: 652px;"></iframe></td></tr></tbody></table><b class="rndfooter" style="background-color: rgb(255, 255, 255);"><b class="rnd1" style="background-color: rgb(255, 255, 255);"></b><b class="rnd2" style="background-color: rgb(255, 255, 255);"></b><b class="rnd3"></b></b><div class="ResizeHandle  right" id="handle_0"></div></div>

給定彈出窗口的HTML,我猜想它只是原始頁面中的div元素,而不是其自己的瀏覽器窗口。 訪問彈出窗口應該是:

browser.div(:id => "popup_0")

就是說,我在其中看不到文本區域,這意味着它可能在iframe元素中。 iframe必須明確告知Watir,這意味着找到所需的文本區域:

browser.div(:id => "popup_0").iframe.textarea(:class => "text sr ", :id  => "arid_WIN_0_636875000")

我認為問題可能出在您的電話打得不好。 順便說一句,不要混用您的哈希樣式。 從雜貨店中挑選更現代的風格。 嘗試這個...

get_a_better_name = textarea(class: "text sr ", id: "arid_WIN_0_636875000")

提示-使用諸如rubocop( https://github.com/bbatsov/rubocop )的代碼linter可以幫助捕獲這些錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM