11

我是 selenium 的新手,我有一个将文件上传到服务器的脚本。

在 ide 版本中,它会上传文件,但是当我将测试用例导出为 python 2 /unittest / webdriver 时,它不会上传它。

它没有给我任何错误,只是没有上传...

蟒蛇脚本是:

driver.find_element_by_id("start-upload-button-single").click()
driver.find_element_by_css_selector("input[type=\"file\"]").clear()
driver.find_element_by_css_selector("input[type=\"file\"]").send_keys("C:\\\\Documents and Settings\\\\pcname\\\\Desktop\\\\ffdlt\\\\test.jpeg")

我搜索了解决方案,但除了将它与 AutoIt 或 AutoHotKey 集成之外,我没有找到任何解决方案......

第一行打开 Firefox 的文件上传框。

4

5 回答 5

8

您的代码非常适合我(我使用 Firefox、Chrome 驱动程序对其进行了测试)

我怀疑的一件事是过度的反斜杠(\)转义。

尝试以下操作:

driver.find_element_by_id("start-upload-button-single").click()
driver.find_element_by_css_selector('input[type="file"]').clear()
driver.find_element_by_css_selector('input[type="file"]').send_keys("C:\\Documents and Settings\\pcname\\Desktop\\ffdlt\\test.jpeg")

或者

driver.find_element_by_id("start-upload-button-single").click()
driver.find_element_by_css_selector('input[type="file"]').clear()
driver.find_element_by_css_selector('input[type="file"]').send_keys(r"C:\Documents and Settings\pcname\Desktop\ffdlt\test.jpeg")
于 2013-09-16T08:33:34.383 回答
2

您是否尝试过这段代码:

driver.find_element_by_css_selector("input[type=\"file\"]").send_keys("C:\\Documents and Settings\\pcname\\Desktop\\ffdlt\\test.jpeg")
于 2013-09-18T05:46:53.467 回答
1

如果我从 IDE 运行以下行,它工作得很好,它会上传文件。

Command | Target                               | Value
_____________________________________________________________
open    | /upload                              |
click   | id=start-upload-button-single        |
type    | css=input[type="file"]               | C:\\Documents and Settings\\cristian\\Desktop\\ffdl\\MyWork.avi

但是当我为 Python webdriver 导出它时,它只是不上传它,我已经尝试了一切。

最后的手段是让它与 AutoHotKey 一起工作,但我希望它工作。

我所做的是测试我在其他网站上找到的解决方案,看看问题是否仅在我试图上传的网站上(youtube),解决方案有效(例如:http://dev .sencha.com/deploy/ext-4.0.0/examples/form/file-upload.html)它们是有效的,您可以将文件上传到大多数服务器,但它不起作用。

谢谢您的帮助。

于 2013-09-17T07:06:47.697 回答
1

这对我有用:

# Upload file
elem = driver.find_element_by_name("File")
elem.send_keys(r"D:\test\testfile04.txt")
elem = driver.find_element_by_partial_link_text("Upload File")
elem.click()
于 2017-04-13T05:47:25.297 回答
0

使用Pyautowin

from pywinauto import Desktop
driver.find_element_by_id("start-upload-button-single").click()
app = Desktop()['Open']   # About `Open`, checkout upload Dialog title
app.wait('visible')
app.Edit.type_keys(R"C:\Documents and Settings\pcname\Desktop\ffdlt\test.jpeg", with_spaces=True)
app['Open'].click()  # About `Open`, checkout upload Button name
于 2020-04-02T01:36:38.303 回答