2015-08-29 42 views
0

我試圖使用自動化的Watir /的Watir-webdriver的Ruby中,像這樣一個文件上傳到一個HTML filepicker:文件上傳到紅寶石的Watir /的Watir-webdriver的隱形file_fields

@browser.form(:action => '/submit').file_fields[0].set "/myfile.txt" 

但是,這將引發下面的錯誤使用不同的瀏覽器時,其是相似的:

SAFARI(初始化@browser = Watir::Browser.new :safari

Selenium::WebDriver::Error::InvalidElementStateError: Element is not currently interactable and may not be manipulated 

FIREFOX:(帶初始化)

Selenium::WebDriver::Error::ElementNotVisibleError: Element is not currently visible and so may not be interacted with 

我已經能夠得到這個工作,但現在它似乎不工作。有在頁面上多file_fields,但實際上他們都不可見:

@browser.file_fields.map{|x| x.visible?} 
=> [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false] 

我不明白爲什麼這是不可見的,因爲我從來沒有過這個問題。有沒有辦法迫使他們可見或我可以使用的另一種技術?

版本: watir-5.0.0 watir-webdriver-0.8.0 ruby 2.1.2p95

+1

你可以發佈有問題的HTML嗎?如果元素有一個'display:none'屬性(和一個唯一的id),你可以這樣做:'b.execute_script(「document.getElementById('YOUR_ID_HERE')。style.display ='block';」) '。 – orde

+0

這裏是輸入的HTML:''input type =「file」id =「file-upload」class =「upload」capture accept =「txt」>它計算的樣式爲:-webkit-font-smoothing:抗鋸齒;光標:指針; display:block; font-family:'Helvetica Neue',Helvetica,Arial,sans-serif; font-size:65px; font-style:normal; font-variant:normal; font-weight:normal; height:374px; left:0px; line-height:normal; 不透明度:1; position:absolute; top:0px; width:300px; z-index:3;' 我成功地使用了'@ browser.execute_script',但是在ruby中,'visible?'仍然是false,我無法與Watir中的元素進行交互。 – CraexIt

回答

0

u能迫使一個隱藏的元件相互作用,象這樣:

@browser.hidden('selector') 

或如果u選擇多個隱藏的元素:

@browser.hiddens('selector').first 
+0

你確定這可行嗎?如果我記得正確,'hidden'用於返回''標籤。它不會返回''。 –