2017-05-04 20 views
0

私は、このページから方法試してみました: Upload file with Selenium in Pythonアップロードファイル

コード:

file_button = browser.find_element_by_id('fileUploadProxy') 
file_button.send_keys('/Users/home/Downloads/1-Students-and-Parent-Email.csv') 

をしかし、私は次のエラーを取得する:

Traceback (most recent call last): 
    File "test.py", line 110, in <module> 
    upload_students_results('Surname, Name') 
    File "test.py", line 91, in upload_students_results 
    file_button.send_keys('/Users/home/Downloads/1-Students-and-Parent-Email.csv') 
    File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webelement.py", line 349, in send_keys 
'value': keys_to_typing(value)}) 
    File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webelement.py", line 493, in _execute 
return self._parent.execute(command, params) 
    File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 249, in execute 
self.error_handler.check_response(response) 
    File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 193, in check_response 
raise exception_class(message, screen, stacktrace) 
selenium.common.exceptions.WebDriverException: Message: unknown error: cannot focus element 
    (Session info: chrome=58.0.3029.96) 
    (Driver info: chromedriver=2.29.461585 (0be2cd95f834e9ee7c46bcc7cf405b483f5ae83b),platform=Mac OS X 10.12.4 x86_64) 
+0

'id =" fileUploadProxy "の要素がHTMLでどのように表現されているかを示してください。 – alecxe

+0

@alecxe

Choose File
Phil

答えて

1

問題があります - あなたはdiv要素に "interactable"ではないキーを送信しており、キーを受け入れないため、 "can not focus element"というエラーが発生します。

あなたがリンクしたソリューションの背後にある考え方は、ファイルのアップロードに責任があるtype="file"input要素にキーを送るにあります。あなたのHTMLでこの要素を見つけ、その要素にキーを送ります。

この要素は不可視である可能性があることに注意してください。この場合、send_keys()を使用するには、まずmake it visibleを実行してください。


更新:

さて、今私たちは、少なくとも私たちの1を望まれる要素を知っている:

<input type="file" name="fileToUpload" id="fileToUpload2" class="fileToUpload"> 

あなたは、この要素を見つけるの悩みを持っているので、どちらかwaiting for itを試してみてください。

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 


file_upload = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "fileToUpload2")) 
) 
file_upload.send_keys('/Users/home/Downloads/1-Students-and-Parent-Email.csv') 

または/と、cheこの要素がiframeの内部にある場合は、iframeのコンテキストに切り替えて要素検索を実行する必要があります。

+0

私は、コードを> 'file_button = browser.find_element_by_id( ')に変更したので、' Phil

+0

@Philここでエラーがスローされますか?要素は表示/編集できますか? – alecxe

+0

現在のエラーPart A> 'file" test.py "、行88、upload_students_results file_button = browser.find_element_by_id( 'fileToUpload2') ファイル" /Library/Python/2.7/site-packages/selenium/webdriver/remote/ webdriver.py "、282行目、find_element_by_id return self.find_element(by = By.ID、value = id_) ファイル" /Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py " 、行784、find_elementで '値':値})['値'] ' – Phil

関連する問題