[英]How to understand that file was uploaded with Selenium and Ruby?
我正在使用 Selenium + Ruby 編寫我的第一個自動化腳本,我需要將文件上傳到 web 應用程序。 問題是上傳需要一些時間(從 30 秒到 3 分鍾,這取決於)。 文件上傳后,我需要點擊“保存”按鈕。
我的代碼如何識別上傳過程已完成並且可以繼續執行?
以下是標准代碼,僅供參考:
driver = Selenium::WebDriver.for :chrome
driver.navigate.to 'my-website.com/upload'
driver.find_element(id: 'upload-input').send_keys('my/path/to/the/document')
driver.find_element(id: 'upload-button').click
**Now my code needs to wait till upload will be completed and then to click "Save" button**
driver.find_element(id: 'save-button').click
謝謝!
從 Selenium 的角度來看,文件上傳中沒有任何東西可以使用,但希望網站上還有其他東西可以使用。
文件上傳完成后,網站上的任何內容都會發生變化嗎? 也許會出現一個圖標,或者一個顯示“上傳完成”的框?
如果是這樣,您可以使用條件等待該元素出現!
就像是:
Selenium::WebDriver::Wait.new(timeout: 30).until {
driver.find_element(id: 'upload-complete').displayed?
}
您需要將其包裝在一個rescue
塊中,以捕獲諸如元素不存在之類的邊緣情況,但希望這能讓您開始!
首先,不要過度使用 Capybara/Selenium,即使它們很酷並且可以為您的項目增加一些價值,它們也是任何 TDD 套件中更脆弱、反復無常和速度較慢的部分,並且永遠不應超過所有組件的 10%你的測試。 使用它來測試文件的上傳顯然是一種反模式。
使用請求 rspec 和 javascript TDD 庫(Jest/Enzyme)來測試新功能。 目前用 Capybara/Selenium 測試所有東西的做法是瘋狂的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.