以下のhtmlコードがあります。
<div align="center">
<input type="file" name="filePath"><br>
<input type="Submit" value="Upload File"><br>
</div>
PythonでSeleniumを使用して、「ファイル」と「送信」の2つの要素を見つけようとしています。以下は、私が使用しようとしたコードです。
from Selenium import webdriver
from Selenium.webdriver.common.keys import Keys
# create a new Firefox session
driver = webdriver.Chrome()
# Maximize the browser window
driver.maximize_window()
# Enter the url to load
driver.get("<<MY PAGE TO LOAD>>")
# Wait for the page to load
driver.implicitly_wait(5)
# find the upload file type and pass a test value
upload_field = driver.find_element_by_partial_link_text('file')
upload_field.clear()
upload_field.send_keys("test")
このコードを実行すると、Chromeブラウザでページを正常にロードできますが、以下の例外が発生します。
# Exception when trying to get element by type
Traceback (most recent call last):
File "C:\Users\TEST\Desktop\Test.py", line 33, in <module>
upload_field = driver.find_element_by_partial_link_text('file')
File "C:\Python\Python36\lib\site-packages\Selenium\webdriver\remote\webdriver.py", line 453, in find_element_by_partial_link_text
return self.find_element(by=By.PARTIAL_LINK_TEXT, value=link_text)
File "C:\Python\Python36\lib\site-packages\Selenium\webdriver\remote\webdriver.py", line 955, in find_element
'value': value})['value']
File "C:\Python\Python36\lib\site-packages\Selenium\webdriver\remote\webdriver.py", line 312, in execute
self.error_handler.check_response(response)
File "C:\Python\Python36\lib\site-packages\Selenium\webdriver\remote\errorhandler.py", line 237, in check_response
raise exception_class(message, screen, stacktrace)
Selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"partial link text","selector":"file"}
(Session info: chrome=63.0.3239.132)
(Driver info: chromedriver=2.35.528161 (5b82f2d2aae0ca24b877009200ced9065a772e73),platform=Windows NT 10.0.14393 x86_64)
私は提供された解決策を見ました here しかし、これもエラーをスローしています。現在Python 3.6.4 x64 with Selenium 3.8.1を使用しています。私のOSはWindows 7 x64ビットです。htmlで「type」を持つ要素を取得するにはどうすればよいですか?
それを使用する適切な方法ではありません partial text セレン部分リンクの使用方法を理解するには、リンクに目を通してください https://www.softwaretestingmaterial.com/how-to-locate-element-by-link-text-and-partial-link-text-locator/
あなたの質問に答えてください。ロケーターを識別するには、nameなどの他の属性を使用します。
それ以外の場合は、このロケーター「// input [@ name = 'filePath']」を試してください