2017-08-28 7 views
0

私はdjangoの管理フォームに似たフォームを用意しています。このフォームでは、オブジェクトを作成し、関連するモデルをポップアップウィンドウの別々のフォームを使って関連付けることができます。Selenium:djangoフォームのテスト、アップロードしないファイル

私のフォームでは、ユーザーはモデルにファイルを添付できます。ファイルのアップロード後 enter image description here

とフォームを送信、新しいファイルが作成され、選択入力で表示されます:
enter image description here彼は

enter image description here

と、このようなポップアップフォームが現れる...プラスボタンでクリック

ここでは、この動作をセレンを使用してテストします。ただし、フォーム送信後にポップアップが閉じると、選択入力はまだ空です。

これは私が私のテストでファイルを添付する方法である:

# 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

チェックのみ1つの入力フィールドがあるかどうか:: 'プリント(LEN(self.browser.find_elements_by_css_selector(「入力[名前= '_ファイルは私がやっていることは、私はこのように、値を格納するフィールドを待っています'] ")))' – Andersson

+0

ファイルのアップロードは、セレンの中で少しトリッキーです。 send_keysを使用することも、ロボットのフレームワークを使用したり、OSのキーボードコントロールをシミュレートしたりする1つの方法です。セレンIDE/Builderを記録して、セレンがどのように処理しているかを確認してください。 –

+0

私はちょうどチェックしました、ただ1つの入力フィールドがあります。 –

答えて

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)を追加**の後にfile_input.send_keys( os.getcwd()+ "/test.txt")**。しかしそれは何も変えなかった。まだ選択要素がポップアップ終了後に空です。 –

関連する問題