2016-09-12 2 views
1

그래서 업로드하는 텍스트 파일에 무언가를하는 엔진과 통신하는 웹 클라이언트를 테스트하고 있습니다. 그래서 기본적으로 업로드 할 파일을 선택합니다. 일단이 파일을 업로드하면 start를 누르면 엔진이 그 일을 수행하고 결과를 반환합니다. 파이썬에서 셀렌을 사용하여 프론트 엔드를 테스트하려고합니다. 이 웹 클라이언트는 zip 또는 txt 파일을 허용합니다. 이 웹 클라이언트의 개발자는 우편 또는 텍스트 이외의 파일 형식이 업로드 될 때이 경우 너무셀레늄 파이썬에서 인식 할 수없는 파일 유형

File type "audio/wav" is not supported: Must be one of "text/plain", "application/zip", "application/zip-compressed", "application/x-zip-compressed". 

과 같은 오류를 줄 것이다 그것을하도록했다, 나는 WAV 오디오 파일을 업로드했습니다. 수동으로 zip 파일을 업로드하려고하면 예상대로 작동합니다. 내가 셀레늄에서 같은 파일을 사용하여이 같은 프로세스를 시도 할 때, 더 이상 파일 형식을 인식하지 않으며 나에게이 오류

File type "" is not supported: Must be one of "text/plain", "application/zip", "application/zip-compressed", "application/x-zip-compressed". 

그래서 파일 형식을 인식 할 수없는을 제공합니다. 내 키보드를 자동화하고 것처럼이 그래서,

choose = self.driver.find_element_by_id("chooseButton") 
time.sleep(1) 
#clicks to open upload window 
choose.click() 
time.sleep(1) 
#ZIp file with other zips 
pyautogui.typewrite("C:\\Transcriber\\Framework\\test\\audio\\Nested.zip") 
time.sleep(1) 
pyautogui.press('enter') 

내가 업로드 버튼을 클릭하면 팝업 업로드 창을 조작하는 pyautogui을 사용하고 있습니다 : 여기에 내가 파일을 업로드 사용하고 있습니다 것입니다. time.sleep은 다음 액션이 시작되기 전에 액션이 종료되도록 액션 사이에 충분한 시간을 제공하기위한 것입니다.

내 지퍼는 일반적인 zip 파일입니다. 셀레늄으로 실행할 때 위의 오류가 발생했습니다. 누구든지 그 문제가 무엇인지 알 수 있습니까? 이것은 파이썬 문제입니까? 미리 감사드립니다.

편집 :이 문제는 테스트 케이스의 zip 파일을 txt 파일로 바꾼 경우에만 zip 파일을 업로드하려고 할 때만 발생합니다.

편집 2 : 테스트 케이스가 끝난 후 브라우저를 열어두면 수동으로 업로드하려고해도 오류가 계속 발생합니다. 따라서 이것은 셀레늄에 의해 생성 된 브라우저 인스턴스에서만 발생하는 것으로 보입니다. 그렇지 않으면, 내가 직접 신선한 브라우저를 열면 zip을 업로드해도 문제가 없습니다.

+0

당신이 업로드 할 파일을 선택 마우스로 당신이 그것을 선택 할 또는 경로를 입력합니까? pyautogui가 입력하고 Enter 키를 누르는 것처럼 경로를 입력하면 어떻게됩니까? 파일 이름이 선택되지 않았으며 파일 이름이 업 로더에 전달되기 때문에 '파일 유형'은 '지원되지 않습니다.'오류가 발생했을 수 있습니다. – tarikki

+0

위의 코드에서 pyautogui를 사용하여 입력 창을 엽니 다. 업로드 창이 올라 오면 셀렌이 더 이상 제어 할 수 없으므로 "수동으로"키를 입력해야합니다. Enter 키를 누르기 전에 인쇄가 완료되었는지 확인하기 위해 1 초의 일시 중지가 있기 때문에 테스트를 모니터링 할 때 경로가 완료되었음을 알 수 있습니다.나는 수동 테스트에서 정확한 경로를 시도하고 작동합니다. 물론 수동 테스트에서 이중 백 슬래시를 제거해야했습니다. – Ted

답변

0

파이썬 + 셀렌은 또한 파일을 직접 업로드 할 수있는 옵션을 제공합니다.

"선택"요소에 대한 완전한 html이 없기 때문에 이것이 사실인지 아닌지 잘 모르겠습니다. 제 경우

는 I 입력 [TYPE = 파일]의 요소를 가지고 있었고, 이는 일했다.

driver.find_element_by_css_selector ('입력 [TYPE = "파일"]) send_keys (경로 + 파일명)

상황에 따라 이후에 확인/제출 버튼을 클릭해야 할 수도 있습니다.

희망이 도움이됩니다. 여기 예를 들어 이에 대한

상세 정보 : How to upload file (picture) with selenium, python

+0

'

Drag orchoose WAV/JSON files here.
이 방법이 도움이 될지 모르지만 귀하의 방법을 시도했지만 내 경우 작동하지 않는 것 같습니다. – Ted

+0

행동에 차이가 있습니까? 아니면 같은 메시지를 주었습니까? 이 정보를 가져 주셔서 감사합니다. 그것은 내가 원했던만큼 나를 돕지 않는다. 그래서 나는 다른 누군가가 아마 더 많이 알고 있기를 바라고있다. 그러나 : #files 요소를 사용하여 제 제안을 시도 했습니까? – Chai

+0

전에 sendKeys를 시도했지만 그 후에도 클릭해야한다는 것을 알지 못했다.하지만 그 말은 내가 나중에 눌러도 내 경우에는 아무 일도 일어나지 않는다. 업로드 창이 그냥 계속 나타납니다. 그게 내가 pyautogui를 사용하여 "수동으로"경로를 입력하고 Enter 키를 눌러야하는 주된 이유입니다. 이상한 점은 (어쩌면 내가 내 질문에 그것을 언급해야합니다), 잘 때 일반 텍스트 파일을 업로드 할 때 같은 테스트 경우, 내가 txt 파일을 압축 파일을 변경할 경우 작동하도록 보인다. 아무런 문제가 발생하지 않습니다. – Ted