有沒有可能用selenium測試工具上傳網頁圖片?我正在使用python。如何用selenium上傳文件(圖片),python
我試了很多東西,但沒有沒有工作。我很絕望。
上傳看起來是這樣的:
http://img21.imageshack.us/img21/1954/uploadgr.jpg
謝謝您的幫助
菲利普。
有沒有可能用selenium測試工具上傳網頁圖片?我正在使用python。如何用selenium上傳文件(圖片),python
我試了很多東西,但沒有沒有工作。我很絕望。
上傳看起來是這樣的:
http://img21.imageshack.us/img21/1954/uploadgr.jpg
謝謝您的幫助
菲利普。
上傳輸入控件會打開一個本地對話框(由瀏覽器完成),因此點擊通過Selenium的控件或瀏覽按鈕將彈出對話框並且測試會掛起。
解決方法是通過JavaScript設置上傳輸入的值(在Java中通過JavascriptExecutor完成),然後提交表單。
見this question樣品在C#中,我相信也有一個方法來調用JavaScript在Python,但我從來沒有使用過硒Python綁定
這不是一個有效的解決方案,請參見https://stackoverflow.com/questions/29720794/jquery-select-input-文件並且也設置它到另一個輸入 – Will 2017-04-17 17:11:06
我在做什麼是這個(確保DRV是webdriver的實例):
drv.find_element_by_id("IdOfInputTypeFile").send_keys(os.getcwd()+"/image.png")
然後找到您的提交按鈕並單擊它。
這應該是被接受的答案。 – 2015-11-24 00:27:53
是的這應該是被接受的答案! – 2017-04-30 10:25:24
您能否詳細說明'os.getcwd()'的作用以及您的示例'image.png'在您的文件系統中的位置。 – ChickenFeet 2017-06-29 12:51:18
所有這些方法都不適用於olx中的現代圖像上傳器! 替代方法(僅適用於Windows)
1. Automation of windows can be done using Autoit
2. Install Autoit and SciTe Script editor
3. Autoit code :(imageupload.au3)
WinActivate("File Upload"); for chrome use "open" that is the name of the window that pops
send("D:\images\image1.png"); path of the file
Send("{ENTER}")
4. compile it to get an .exe file(imageupload.exe)
5. Now from python call the .exe file like
import os
import os.system('C:\images\imageupload.exe') #path of the .exe file
我用下面的腳本格式上傳圖像。這可能會幫助你。
Imagepath=os.path.abspath('.\\folder1\\subfolder2\file1.jpg')
driver.find_element_by_id("Id of the element").clear()
driver.find_element_by_id("Id of the element").send_keys(Imagepath)
如果你沒有對象的ID,那麼你就可以相應地使用XPath或CSS選擇器。
import win32com.client
shell = win32com.client.Dispatch("WScript.Shell")
shell.Sendkeys("C:\text.txt")
shell.Sendkeys("~")
將解決此問題
Hi我需要你的幫助,我正在嘗試上傳圖像文件並使用此代碼,但不適用於選擇file.its不會觸發輸入事件或製表鍵。你能幫我麼? – 2017-04-06 14:41:00
我使用fine-uploader,運行Selenium測試與pytest這個工作對我來說:
elm = driver.find_element_by_xpath("//input[@type='file']")
elm.send_keys(os.getcwd() + "/tests/sample_files/Figure1.tif")
沒有提交表單或回車鍵需要在我的情況。
謝謝你所有的答案!它幫助了很多!
使用碎片:
browser.attach_file( 'file_chooser_id',fully_qualified_file_path)
我添加了一個答案任何人都希望使用處理惱人msofiledialogs。這取決於saravanan提出的解決方案,但更多地充實了Python。
我有一個類似的問題,我正在爲一家公司工作。我試圖爲公司的客戶上傳文件,但由於他們的網站工作方式,我無法利用send_keys直接發送路徑,所以我不得不依靠msofiledialog。
你只需要安裝的AutoIt https://pypi.python.org/pypi/PyAutoIt/0.3或只是通過命令屏幕
型 「進口AutoIt的」 腳本頁面
類型的 「PIP安裝-U pyautoit」 以下在您的腳本彈出文件對話框之前:
autoit.win_active(「Open」) autoit.control_send(「Open」,「Edit1」,r「C:\ Users \ uu \ Desktop \ TestUplo ad.txt 「) autoit.control_send(」 打開」, 「EDIT1」, 「{} ENTER」)
它會尋找打開文件對話框窗口,並填寫,然後按回車。 「打開」是我的文件對話框的標題。把你的頭銜代替「打開」。有更多創造性的方式來利用AutoIt的功能,但這對初學者來說是一個簡單,直接的方法。
編輯:不。如果可以避免,請不要在大多數情況下使用control_send。它有一個衆所周知的發送錯誤文本的問題。在我的情況下,我的文件路徑中的冒號變成了一個分號。如果您需要發送輸入密鑰,則應該沒問題,但是如果您需要發送文本,請使用control_set_text。它具有相同的語法。
autoit.control_set_text("Open","Edit1",r"C:\Users\uu\Desktop\TestUpload.txt")
我發佈了一個[使用python的答案] [1]。 [1]:http://stackoverflow.com/a/11872608/471376 – JamesThomasMoon1979 2012-08-08 20:30:01