Selenium WebDriver를 Python으로 움직일 때 파일 선택의 send_keys로 고정 [PhantomJS]
결론
(적어도)input
태그의 display
가 none
이면 파일을 성공적으로 설정할 수 없습니다.
그러므로 파일을 지정하기 전에 style을 엉망으로 가시화해 주면 좋다.
driver.execute_script("document.getElementsByName('datafile')[0].style.display = '';")
검증 환경
driver.execute_script("document.getElementsByName('datafile')[0].style.display = '';")
3계가 아닌가 Headless Chrome이 아니냐는 상관하지 마세요.
검증 사이트는
<INPUT type="file"> - HTML 태그 참조
의
input
를 사용하게 합니다.코드
성공하는 사람from selenium import webdriver
from selenium.common.exceptions import TimeoutException
if __name__ == '__main__':
try:
driver = webdriver.PhantomJS()
driver.get('http://www.htmq.com/html/input_file.shtml')
elm = driver.find_element_by_name("datafile")
print('get')
elm.send_keys('./test.jpg')
print('send')
except TimeoutException as e:
print(e)
finally:
driver.quit()
실패하는 사람from selenium import webdriver
from selenium.common.exceptions import TimeoutException
if __name__ == '__main__':
try:
driver = webdriver.PhantomJS()
driver.get('http://www.htmq.com/html/input_file.shtml')
# new!
driver.execute_script("document.getElementsByName('datafile')[0].style.display = 'none';")
elm = driver.find_element_by_name("datafile")
print('get')
elm.send_keys('./test.jpg')
print('send')
except TimeoutException as e:
print(e)
finally:
driver.quit()
이 예에서는 정상적으로 움직이는 것을 일부러 움직이지 않게 하고 있다.
넘어서 실패하는 것 = style.display = 'none'
어떤 것은 이것을 없애야 한다.
driver.execute_script("document.getElementsByName('datafile')[0].style.display = '';")
만난 사이트는 숨겨진 input을 내포한 div로 버튼을 만들고 있었다.
수동이나 SeleniumIDE에서 문제없이 움직이고 있었기 때문에, 문제의 특정에 상당히 번거로웠다…
Reference
이 문제에 관하여(Selenium WebDriver를 Python으로 움직일 때 파일 선택의 send_keys로 고정 [PhantomJS]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/khsk/items/d017191905db99a94ffe
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
if __name__ == '__main__':
try:
driver = webdriver.PhantomJS()
driver.get('http://www.htmq.com/html/input_file.shtml')
elm = driver.find_element_by_name("datafile")
print('get')
elm.send_keys('./test.jpg')
print('send')
except TimeoutException as e:
print(e)
finally:
driver.quit()
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
if __name__ == '__main__':
try:
driver = webdriver.PhantomJS()
driver.get('http://www.htmq.com/html/input_file.shtml')
# new!
driver.execute_script("document.getElementsByName('datafile')[0].style.display = 'none';")
elm = driver.find_element_by_name("datafile")
print('get')
elm.send_keys('./test.jpg')
print('send')
except TimeoutException as e:
print(e)
finally:
driver.quit()
driver.execute_script("document.getElementsByName('datafile')[0].style.display = '';")
Reference
이 문제에 관하여(Selenium WebDriver를 Python으로 움직일 때 파일 선택의 send_keys로 고정 [PhantomJS]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/khsk/items/d017191905db99a94ffe텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)