2014-01-19 116 views
0

我試圖自動輸入文本到嵌套在使用Watir的iframe中的輸入字段。用watir-webdriver輸入嵌入在iframe中的輸入文本

這是我使用的嘗試訪問IFRAME

fr = b.frame(:index => 0) fr.text.include? 'Remember My Sign-In ID'

這是返回false什麼。 另外,如果我嘗試輸出fr.text它只是一個空字符串。

我也創建了一個HTML的小提琴,我試圖對此運行。

Fiddle

或者你也可以打現場實際here

我試圖通過索引訪問iframe,因爲沒有指定的ID或類。

<iframe height="auto" frameborder="0" src="https://auth.api.sonyentertainmentnetwork.com/2.0/oauth/auth…rtainmentnetwork.com/shared/html/signinRedirect_SSOAuth.html" marginwidth="0" marginheight="0">

+0

什麼問題? 'located = false'只是意味着你還沒有試圖對框架做任何事情。 –

+0

啊;沒有意識到這一點。我已經更新了問題的主體。基本上,一旦我嘗試以這種方式獲取iframe,然後嘗試訪問文本fr.text(或者該iframe的任何元素),那裏就沒有任何東西。這使我相信它沒有訪問正確的iframe。 – bigtunacan

回答

0

定位適當的框架

第一個問題是,你找錯幀。實際上頁面上有4個框架(假設您點擊了登錄鏈接)。

爲了避免定位由指數的元素,你也應該考慮的元素IFrame的屬性:

<div class="_modal_content close-this-modal" id="_modal_content" tabindex="998"> 
    <div class="modal modal-iframe" tabindex="1000"> 
    <h1></h1> 
    <div style="height: 638px;" class="modal-iframe-wrapper"> 
     <iframe marginheight="0" marginwidth="0" src="removed.html" frameborder="0" height="auto"> 

正如你可以在這個網站看到,該框架是在「_modal_content」分區的第一幀標籤。因此,你可以找到與框架:

fr = b.div(:id => '_modal_content').frame 

獲得一個框架

的第二個問題是,text方法返回框架元素一個空字符串的文本。我不記得它是否一直如此,但似乎你需要檢查幀中特定元素的文本(而不是幀本身)。最簡單的方法是獲取第一個元素,即html元素。

fr.element.text.include? 'Remember My Sign-In ID' 
#=> true 
+0

謝謝!正是我在找的東西。這是我第一次使用Watir,並且文檔不是那麼詳細:) – bigtunacan