最近在寫webUI的自動化測試,遇到文件上傳的情況,這裏採用了模擬鍵盤的方法,但是在模擬鍵盤輸入時,遇到了一個問題,就是文件路徑開頭的斜槓/輸入不進去,
例如file賦值爲‘/User/zhangmiaomiao/Doucument/test.jpg’,文件路徑開頭的斜槓/沒有輸入進去,只輸入了User/zhangmiaomiao/Doucument/test.jpg,原因不明,這裏提供一個臨時的解決方案,希望知道原因的小夥伴可以分享一下。步驟如下:
- 首先定位到上傳文件按鈕(selenium定位元素)
- 鍵盤模擬查找文件
- 輸入文件路徑
- 點擊回車,找到文件
- 點擊回車,確定上傳
按照下面方法模擬鍵盤輸入文件file時,文件路徑開頭的斜槓/沒有輸入進去。
from pykeyboard import PyKeyboard
from pymouse import PyMouse
import pyperclip
import time
#模擬鍵盤找到要上傳的文件,進行上傳
def upload_file(self, file):
#定位上傳按鈕
self.click(self.salon_banner_loc)
k = PyKeyboard()
m = PyMouse()
#模擬快捷鍵Command+Shift+G
k.press_keys(['Command', 'Shift', 'G'])
#輸入文件路徑
x_dim, y_dim = m.screen_size()
m.click(x_dim // 2, y_dim // 2, 1)
k.type_string(file)
#前往文件
k.press_keys(['Return'])
#點擊確定進行上傳
k.press_keys(['Return'])
這裏提供一個解決方案,首先模擬鍵盤複製粘貼,先將斜槓/輸入進去,然後再輸入全路徑,注意需加上等待時間,代碼如下:
from pykeyboard import PyKeyboard
from pymouse import PyMouse
import pyperclip
import time
def upload_file(self, file):
self.click(self.salon_banner_loc)
k = PyKeyboard()
m = PyMouse()
filepath = '/'
k.press_keys(['Command', 'Shift', 'G'])
x_dim, y_dim = m.screen_size()
m.click(x_dim // 2, y_dim // 2, 1)
# 複製文件路徑開頭的斜槓/
pyperclip.copy(filepath)
# 粘貼斜槓/
k.press_keys(['Command', 'V'])
# 輸入文件全路徑進去
k.type_string(file)
k.press_key('Return')
time.sleep(2)
k.press_key('Return')
time.sleep(2)
這樣圖片就上傳成功啦~
可是,爲什麼用第一種方法斜槓/輸入不進去呢。。。。。。求大佬指點~~