2017-08-28 44 views
0

我有一個類似於django admin表單的表單,用戶可以在彈出窗口中使用不同的表單創建對象並附加相關模型。Selenium:測試django表單,文件沒有上傳

在我的表單中,用戶可以將文件附加到模型中。他點擊的加號按鈕...

enter image description here

和這種彈出的形式顯示出來: enter image description here

文件上傳後,並提交形式,創建新的文件,並選擇輸入顯示:
enter image description here

現在,我想使用硒測試這種行爲。但是,當表單提交後popup彈出關閉時,選擇輸入仍爲空。

這是我在我的測試附加文件:

# select plus btn 
plus_btn = self.browser.find_element_by_css_selector(
    ".related-widget-wrapper select#id_files + a") 

plus_btn.click() 

self.switch_to_popup() 

file_input = self.browser.find_element_by_css_selector(
    "input[name='_file']") 

file_input.send_keys(os.getcwd() + "/test.txt") 

self.browser.find_element_by_css_selector(
    "input[type='submit']").click() 

self.switch_to_main() 

PS: 的問題不是在self.switch_to_popupself.switch_to_main。這些都是有效的,我創造的工作方法。

+0

檢查是否有隻有一個輸入字段:'打印(LEN(self.browser.find_elements_by_css_selector(「輸入[名稱='_文件']「)))' – Andersson

+0

硒的文件上傳有點棘手。使用send_keys是一種嘗試使用機器人框架或嘗試模擬操作系統的鍵盤控件的方法。嘗試記錄硒IDE /生成器,看看硒是如何處理它。 –

+0

我剛查過,只有一個輸入欄。 –

回答

0

Selenium異步工作,所以在點擊或其他事件發生後,您的測試代碼可能會在字段更新之前的一小段時間內檢查字段的內容。我做的是我等待一個字段包含一個值,像這樣:

from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

WebDriverWait(self.browser, 10).until(
    EC.text_to_be_present_in_element(locator, 'This is test file')) 
+0

有關,我希望我能理解你的答案:我在** self.switch_to_main()**之後添加了time.sleep(10),其中我在select input +中查找文件名後+ file_input.send_keys( os.getcwd()+「/test.txt")**以防萬一。但它沒有改變。彈出關閉後仍然選擇元素爲空。 –

相關問題