2013-05-27 38 views
1

我使用硒webdriver的嘗試和模仿文件上傳硒的webdriver ElementNotVisible錯誤輸入型=「文件」元素

我有一個文件輸入字段:在我的測試結果

<input class="upload_file_field" id="main_image_file" label="false" name="banner_image_file" type="file" /> 

使用此在ElementNotVisibleError

@driver.find_element(:id, "main_image_file").send_keys "/Users/dan/Desktop/sample.jpg" 

我甚至嘗試要上傳的文件之前,更改瀏覽權限:

@driver.execute_script("arguments[0].style.visibility='visible'; arguments[0].style.display='block'; arguments[0].style.height='100px'; arguments[0].style.width='100px'; arguments[0].style.opacity=1; arguments[0].style.zindex=20", @driver.find_element(:id, "main_image_file")) 

它仍然導致ElementNotVisibleError

任何建議,將不勝感激

UPDATE

好了,原來,有幾個條件,它可以使隱藏的元素:

  1. 不能有0不透明
  2. 必須有長度和寬度> 0
  3. 不能隱藏的知名度
  4. 顯示不能沒有
  5. 變換屬性可以移動到頁面的元素,這使得它不可見

我的問題是與變換屬性。這是一種隱藏輸入字段的方式,通過將其完全轉換爲頁面,以便我可以使用使用jQuery文件上傳的更好的樣式按鈕。

之後,

@driver.find_element(:id, "main_image_file").send_keys "/Users/dan/Desktop/sample.jpg" 

在模擬文件

+0

類似的問題嗎?當元素隱藏在div後面時,我遇到了與Chrome相同的問題,並且需要向下滾動才能看到元素。但在Firefox中有自動滾動,因此你不會看到這個錯誤。 – LINGS

+0

這是與火狐 – user2426286

回答

0

它只可能是頁面沒有因爲一些錯誤的裝載情況的用戶選擇工作得很好。你可以嘗試錯誤:

raise(@driver.page_source.to_s) 

就在find_element命令之前?

通過這種方式,您可以確保輸入字段實際位於頁面上,如Selenium所示。

您使用Ruby
+0

我試過你的建議和輸入字段確實被硒看到。 – user2426286