0

我想使用以下 python 代码上传文件:

driver.find_element_by_id("fileFieldName-file").send_keys("D:\\manual.pdf")

该代码在 Firefox 中运行良好,但在 IE 和 Chrome 中失败。例外情况如下:

WebDriverException: Message: '{ "status" : 404, "sessionId" : "<no session>", "value" : "Command not found: POST /session/e56793e2-79f9-4bb9-820e-91090ccee083/file" }'

4

1 回答 1

0

我自己找到答案。 http://code.google.com/p/selenium/issues/detail?id=3736 是selenium的bug。解决方法如下: 1.在C:\Python27\Lib中找到“webelement.py”文件\site-packages\selenium-2.21.2-py2.7.egg\selenium\webdriver\remote 2.在“webelement.py”中找到函数“_upload” 3.修改函数“_upload”的代码,添加条件在异常处理部分。

def _upload(self, filename):
    fp = StringIO()
    zipped = zipfile.ZipFile(fp, 'w', zipfile.ZIP_DEFLATED)
    zipped.write(filename)
    zipped.close()
    try:
        return self._execute(Command.UPLOAD_FILE, 
                        {'file': base64.encodestring(fp.getvalue())})['value']
    except WebDriverException as e:
        if "Unrecognized command: POST" in e.__str__():
            return filename
        elif "Command not found: POST" in e.__str__():
            return filename
        else:
            raise e

强文本

于 2012-06-18T08:55:17.747 回答