使用selenium做自動化時,我們經常會遇到的一個讓人頭疼的問題就是 文件上傳 。
問題的難點在于selenium無法識別并操作Windows窗口,若我們可以繞過彈出框直接把文件信息上傳給選擇按鈕,難點就解決了。
以下是常見頁面形式 :
分析HTML ,發現無論是普通前臺還是Extjs,他們的html有一個共同的特點,具有以下代碼:
< input ..... type ="file" ...../ >
ok,只要我們使用selenium自帶的sendkeys把文件路徑(相對絕對無所謂)傳給該元素,就可繞過選擇窗口直接上傳文件.
解決方案誕生了
driver.findElement(XXXXX).sendKeys("filePath");
?
Have?a?Try
博客園上傳圖片:driver.findElement(By.name("file")).sendKeys("C:\Users\123\Pictures\a.png");
QQ郵箱上傳附件:driver.findElement(By.name("UploadFile")).sendKeys("C:\Users\123\Pictures\a.png");
定位元素根據情況而定,不一定用name;文件路徑可以使相對路徑,大家自行修改就好
?
注意: 執行sendKeys的元素一定要符合 input 和 type="file" 條件,否則就是你沒找對上傳文件的對象,會上傳失敗的。
像這樣的,一定注意不要上傳到前面的那個input上,否則會失敗的
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
