このページの方法を試しました:PythonでSeleniumを使用してファイルをアップロードする
コード:
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)
問題はdiv
、「対話可能」ではない要素にキーを送信しているため、キーを受け入れないため、「要素にフォーカスできません」というエラーが発生することです。
リンクしたソリューションの背後にある考え方は、ファイルのアップロードを担当するinput
要素にキーを送信することtype="file"
です。HTMLでこの要素を見つけて、キーを送信します。
この要素は非表示になる可能性があることに注意してください。このケースでは、最初にすべきことが見えるようにするためにsend_keys()
作業します。
更新:
さて、これで少なくともどの要素が目的の要素であるかがわかりました。
<input type="file" name="fileToUpload" id="fileToUpload2" class="fileToUpload">
この要素を見つけるのに問題があるので、それを待ってみてください:
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')
または/および、この要素が内部にあるかどうかを確認します。内部にあるiframe
場合は、のコンテキストに切り替えてからiframe
、要素検索を実行する必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加