2016-03-31 15 views
2

webdriverを使用してファイルを選択したいのですが、それ以外の回答があっても動作しません。彼らはボタンにファイルパスを与えるだけで、何もしないと言います。selenium webdriver pythonを使ってファイルをアップロードする

enter image description here

これは他の人が何を言うことですが、動作しません:私はよ一度

element = driver.find_element_by_name("file") 
element.send_keys("/home/pavel/Desktop/949IH3GNHAo.jpg") 

はどのようにしてファイルを提出することができ、アップロードボタンをクリックした後、このようになります。 webdriverインスタンス?ありがとうございました

+1

「うまくいかない」とはどういう意味ですか?何が起こるのですか?あなたはあなたがナビゲートしているURLを含む完全なコードを投稿できますか?ありがとう。 – alecxe

+1

センドキーを使用して画像ファイルを選択した後、再度参照ボタンにないアップロードボタンをクリックする必要があります –

答えて

0

アップロードウィンドウはシステムウィンドウであり、webviewではありません。 Selenium webdriversは、webview内のものだけを制御できます。ファイルを選択する作業は、AutoITのような別のライブラリに任せる必要があります。

+1

本当ですか? :https://saucelabs.com/resources/articles/selenium-file-upload –

+0

私はそのスタイルを働かせることができませんでした。私はもう一度試してみます – codyc4321

2

AutoITを試してください。

非常に使いやすく、仕事をします。

最初webdriverをスクリプトでアップロードボタンをクリックし、その後でAutoItの.exeファイルを実行します。ファイルのアップロードが完了するまで

import subprocess 
subprocess.Popen('[name_of_your_script].exe') 

は、次に期待される条件を使用して、それをwait.untilを与えるので、待機します。あなたが作成するファイルを右クリックし、コンパイルスクリプトを選択書かれたスクリプトを、持ってたら

Local $hWnd=WinWait("[CLASS:#32770]","",10) 

ControlFocus($hWnd,"","Edit1") 

; Wait for 2 seconds. 

    Sleep(2000) 

    ControlSetText($hWnd, "", "Edit1", "AAUPLOADFILE.png") 

    Sleep(2000) 

; Click on the Open button 

    ControlClick($hWnd, "","Button1"); 

:以下

例のAutoItコードは「AAUPLOADFILE.png」と呼ばれるファイルを選択します.exeファイル。

+0

これは妥当なaliだと思われます。あなたはファイル名を渡す方法についてどのような例がありますか?もし私のpythonスクリプトが 'FILENAME =" AAUPLOADFILE.png "と他のものを渡すことができれば、私は感激するでしょう。あなたは私にPMできますか? – codyc4321

+0

もう1つの問題は私がウィンドウを使用していないことです – codyc4321

+1

私は、自動化のためにubuntu/linuxを使ったことはありません。申し訳ありませんが、AutoITは実際にはWindowsのみのアプリケーションです。私はこれを見つけましたが、彼らはそれがLinuxのためのAutoIT同等であると言う:http://www.semicomplete.com/projects/xdotool/ – Alichino

0

で解決この問題は、私はまた、Pythonとセレンを使用して、アップロードに問題がありましたよ。 アップロード用のウェブフォームが表示されず、「アップロードイメージ」の下にあるためでした。 (隠しアップロードフォーム)

だから私は回避策を作った。

# Try to open page with upload form 
driver.get('https://bla.com/library/browser') 

# Waiting for upload element with name upload-search-block 
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "upload-search-block"))) 

# Relocate hidden upload form using JS 
driver.execute_script("document.getElementById('upload-search-block').style.left='200px';") 
driver.execute_script("document.getElementById('upload-search-block').style.top='170px';") 

# And upload file in the end 
upload = driver.find_element_by_id('upload-search-block') 
upload.send_keys('/tmp/custom_doc.docx') 

幸運。

関連する問題