Selenium Webdriver with Python을 사용하여 파일 업로드가 작동하지 않습니다. 어제 셀레늄과 파이썬을 다시 설치 했으므로 모든 것이 최신이라고 확신합니다. 도움이된다면 Windows 7을 사용하고 있습니다. 나는 다른 사람들이이 질문을 한 것을 알고 있으며, 모두가 권장하는 대답은 파일 업로드 요소에서 send_keys 명령을 사용하는 것입니다. 파일 업로드가있는 다른 웹 페이지에서이 작업을 시도해 보았습니다. 적어도 하나의 다른 페이지에서 작업 할 수있게되었지만 테스트 할 페이지에서 동일한 절차를 시도해도 아무 것도 일어나지 않습니다. 나는이 일을 할 수없는 다른 사람들의 사례를 발견 한 것을 기억하고 있다고 생각합니다. 그래서 나는이 문제가있는 유일한 사람은 아니라고 생각합니다.Selenium Webdriver에서 send_keys를 사용하여 파일을 업로드 할 수 없습니다.
관련성이있는 한 가지는 파일 업로드 양식에서 send_keys를 시도했을 때 요소가 보이지 않아서 상호 작용할 수 없다는 오류가 발생했습니다 (사실, 눈에 보이지는 않지만 분명히 셀레늄의 눈에는 없다). I 미리 자바 스크립트의 행을 실행함으로써이 문제를 해결 :
document.getElementById('UploadDocumentPopup').style.display = 'block';
(UploadDocumentPopup)의 또 다른 잠재적으로 유용한 토막 다시 점이다 파일 입력부의 부모 요소)
이고 I는 셀레늄 1을 사용했을 때/Selenium RC, attach_file 명령 (Firefox에서만 지원됨)을 사용하여 성공했습니다.
도움이 될 경우 여기에서 작업중인 페이지로 이동하는 방법에 대해 알아보십시오. https://qa.infosnap.com/family6/gosnap.aspx?action=3345&culture=en 링크를 클릭하고 "작업 계속"을 클릭 한 다음 [email protected] 전자 메일 주소와 "asdfjkl;"(인용 부호 제외)을 사용하여 로그인하십시오. 그런 다음 "작업 계속"링크 중 하나를 클릭하십시오. 가져 오는 페이지에는 문서 업로드 및 사진 업로드 섹션이 있어야합니다. 그렇지 않다면 "prev"와 "next"를 사용하여 서핑을하고 페이지가 3 페이지 만있는 것을 찾으십시오. 관련 코드가 있습니다. 다른 여러 가지를 시도해 보았습니다. 도움이되고 기억할 수 있다면 기꺼이 나누어 드리겠습니다. 그러나 이것이 내가 생각하기에 "작동하는"것으로 생각되는 방식입니다. 기분이 좋으면 페이지 소스를 자유롭게 확인하십시오. 그러나 FYI 'documentfile'은 페이지 소스의 input type = 'file'요소의 이름이고, 마지막 행의 xpath는 "upload "버튼을 누릅니다.
js = "document.getElementById('UploadDocumentPopup').style.display = 'block';"
wd.execute_script(js)
wd.find_element_by_link_text("Upload Document...").click()
wd.find_element_by_id("documentfile").send_keys("C:\\Users\\username\\testdoc.rtf")
#ActionChains(wd).send_keys(Keys.ESCAPE)
wd.find_element_by_xpath("//div[@id='modal_container']/div/form/div/input[1]").click()
업데이트 : 나는 파이어 폭스 이외에이 시도하지 않았다 실현, 그래서 나는 IE11 시도 - send_keys를 호출 할 때, 기본 OS 파일 업로드 박스가 와서 무슨 일이 (나는라고 생각하는 이상한, "탐색"버튼을 클릭하지 않았기 때문에 - send_keys 만 사용) 텍스트가 파일 이름 필드에 입력되었습니다. 그런 다음 파일 업로드 대화가 사라졌습니다.하지만 아무 일도 없었던 것처럼 보입니다. 요약 : Internet Explorer에서 파일 업로드 대화 상자가 열리고 파일 경로가이 대화 상자에 입력되면 대화 상자가 사라지지만 파일을 실제로 첨부하지는 않습니다. Firefox에서는 대화 상자가 열리지 않고 첨부 된 파일이 없습니다. Chrome은 Firefox와 동일합니다.
편집 : 여기에 문서 업로드 섹션의 HTML 코드이다 : 나는 또한 내가 완전히 셀레늄 기반 솔루션을 찾고 있어요 언급해야
<div id="UploadDocumentPopup" style="display:none;">
<div class="popupmenu">
<h1 style="margin-top:0px; padding-bottom:10px; border-bottom:1px solid #CCCCCC;">
Upload Document
</h1>
<p>
Choose a file to upload.
</p>
<form id="documentuploadform" action="services/documentservice.aspx" enctype="multipart/form-data" method="post"
onsubmit="return AIM.submit(this, {'onStart' : startUploadDocument, 'onComplete' : completeUploadDocument})">
<input type="file" size="50" id="documentfile" name="documentfile" />
<input type="hidden" name="cmd" value="upload" />
<input type="hidden" id="documentuploadfield" name="field" />
<div style="margin-top: 10px;">
<input name="ctl00$OutsideFormContentPlaceholder$ctl06" type="submit" value="Upload" />
<input name="ctl00$OutsideFormContentPlaceholder$ctl07" type="button" onclick="Control.Modal.close();" value="Cancel" />
</div>
</form>
</div>
</div>
- 나는 AutoIt이와 비슷한 도구에 대해 알고는 있지만 원격으로 실행해야합니다.
HTML은 어떻게 보이나요? 관련 HTML 스 니펫을 제공하십시오. – olyv
@olyv 나는 그것이 도움이되기를 바란다. (또한, 나는 계속 코멘트를하려고 노력하고있다. 그리고 그것이 사라지는 것을 계속한다. - 그것이 내가 어리 석고, 아니면 나보다 단서가 더 많은 누군가가 그것을 삭제하고 있다면 - 어떤 경우에 나는 멈출 것이다. reposting) – user3771832
http://stackoverflow.com/q/9726005/2504101 여기에'input type = "file"'에 대한 다른 해결책이 나와 있습니다. 먼저 시도하십시오. – olyv