最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python爬蟲中Selenium實現(xiàn)文件上傳

 更新時間:2020年12月04日 12:04:30   作者:程序猿雜記  
這篇文章主要介紹了Python爬蟲中Selenium實現(xiàn)文件上傳,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言:大部分的文件上傳功能都是用input標簽實現(xiàn),這樣就完全可以把它看作一個輸入框,可以通過send_keys()指定文件進行上傳了。

本章中用到的關(guān)鍵方法如下:

send_keys():上傳文件或者輸入文本
from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get('http://file.yiyuen.com/file/')

# 定位上傳按鈕,添加本地文件
driver.find_element_by_name("files").send_keys('D:\\test.txt')
time.sleep(10)

driver.quit()

Web上本地上傳圖片,彈出的框Selenium是無法識別的,也就是說,selenium本身沒有直接的方法去實現(xiàn)上傳本地文件,這里總結(jié)了兩種上傳文件的方式。

一、利用Robot類處理文件上傳。

其大致流程可以為:

1、 利用selenium點擊web上本地文件的上傳按鈕;

2、 在彈出的彈框中,文件路徑輸入框默認的是光標的聚焦,將文件在磁盤上的路徑通過拷貝和黏貼的方法寫上去。

3、 通過按下回車,默認觸發(fā)彈框的確定按鈕,完成文件上傳的功能。

這里以百度首頁的利用圖片搜索為例:

打開百度首頁,搜索按鈕左側(cè)有一個照相機的圖標,點擊可以選擇圖片搜索,我們通過本地上傳圖片的過程來模擬文件自動化上傳操作。準備條件,在百度圖片搜索一個圖片,保存到桌面,例如找到一個關(guān)于selenium的圖片,然后保存在桌面,名稱為selenium.jpg。

相關(guān)實現(xiàn)代碼如下:

package first;

import java.awt.Robot;

import java.awt.Toolkit;

import java.awt.datatransfer.StringSelection;

import java.awt.event.KeyEvent;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.firefox.FirefoxDriver;

public class shangchuang {

public static void main(String[] args)throws Exception {

WebDriver driver=new FirefoxDriver();

driver.manage().window().maximize();

driver.manage().timeouts().implicitlyWait(4, TimeUnit.SECONDS);


driver.get("https://www.baidu.com");

//指定圖片路徑

StringSelection selection=new StringSelection("C:\\Users\\你的用戶名\\Desktop\\selenium.jpg");

//把圖片路徑復(fù)制到剪切板

Toolkit.getDefaultToolkit().getSystemClipboard().setContents(selection, null);

System.out.println("selection"+selection);

//點擊照相機這個工具

driver.findElement(By.xpath("http://*/span[@class='soutu-btn']")).click();

//點擊本地上傳圖片

driver.findElement(By.xpath("http://*/div[@class='upload-wrap']")).click();


//新建一個Robot類的對象

Robot robot=new Robot();

Thread.sleep(1000);

//按下Ctrl+V

robot.keyPress(KeyEvent.VK_CONTROL);

robot.keyPress(KeyEvent.VK_V);

//釋放Ctrl+V

robot.keyRelease(KeyEvent.VK_CONTROL);

robot.keyRelease(KeyEvent.VK_V);

Thread.sleep(2000);

//點擊回車

robot.keyPress(KeyEvent.VK_ENTER);

robot.keyRelease(KeyEvent.VK_ENTER);
}
}

二、利用AutoIt上傳文件

以上是第一種方的實現(xiàn),第二種方式是利用AutoIt這個工具。這是一個能支持桌面GUI自動化的工具,它支持腳本語言編寫。在Selenium腳本中如果需要AutoIt來協(xié)助這個文件上傳功能,大概步驟是這樣的:

1. Selenium點擊web產(chǎn)品上的文件上傳按鈕,彈窗上傳框。

2.執(zhí)行AutoIt實現(xiàn)準備好的腳本文件,這個腳本文件寫了關(guān)于上傳什么文件的一個.exe文件。

在一切測試工作之前,我們先下載和安裝AutoIt。

1)打開AutoIt的官網(wǎng)下載地址

https://www.autoitscript.com/site/autoit/downloads/

2)點擊下載zip,當然也可以下載Editor。

解壓得到的效果如圖:

3)點擊SciTe文件夾,我們打開腳本編輯器。雙擊SciTE.exe

4)打開百度圖片上傳窗口,同時打開AutoIt 腳本編輯器和元素定位器。拖動元素定位器上那個靶點形狀按鈕到文件上傳彈窗,能夠捕獲到一些元素信息。

5)在AutoIt腳本編輯器里輸入如下腳本,綠色部分為解釋的,不需要寫。

6)編譯成一個.exe文件

先保存到本地,例如默認路徑保存,名稱為UploadFile.au3,然后在AutoIt腳本編輯器中點擊Tools菜單,選擇compile,會在同路徑下生成一個UploadFile.exe的文件,待會在Selenium腳本要使用。

7)Selenium腳本執(zhí)行UploadFile.exe文件,觀察文件是否上傳。

package first;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.firefox.FirefoxDriver;

public class AutoIt {

public static void main(String[] args) throws Exception{

WebDriver driver=new FirefoxDriver();

driver.manage().window().maximize();

driver.manage().timeouts().implicitlyWait(4, TimeUnit.SECONDS);


driver.get("http://www.baidu.com");

//點擊照相機這個工具

driver.findElement(By.xpath("http://*/span[@class='soutu-btn']")).click();

//點擊本地上傳圖片

driver.findElement(By.xpath("http://*/div[@class='upload-wrap']")).click();

// 執(zhí)行桌面的AutoIt封裝的腳本

Runtime.getRuntime().exec("C:\\Users\\你的用戶名\\Desktop\\UploadFile.exe");

}

}

我用的是火狐62,最終的效果如圖所示:

Selenium文集傳送門:

標題 簡介
Python爬蟲 - Selenium(1)安裝和簡單使用 詳細介紹Selenium的依賴環(huán)境在Windows和Centos7上的安裝及簡單使用
Python爬蟲 - Selenium(2)元素定位和WebDriver常用方法 詳細介紹定位元素的8種方式并配合點擊和輸入、提交、獲取斷言信息等方法的使用
Python爬蟲 - Selenium(3)控制瀏覽器的常用方法 詳細介紹自定義瀏覽器窗口大小或全屏、控制瀏覽器后退、前進、刷新瀏覽器等方法的使用
Python爬蟲 - Selenium(4)配置啟動項參數(shù) 詳細介紹Selenium啟動項參數(shù)的配置,其中包括無界面模式、瀏覽器窗口大小設(shè)置、瀏覽器User-Agent (請求頭)等等
Python爬蟲 - Selenium(5)鼠標事件 詳細介紹鼠標右擊、雙擊、拖動、鼠標懸停等方法的使用
Python爬蟲 - Selenium(6)鍵盤事件 詳細介紹鍵盤的操作,幾乎包含所有常用按鍵以及組合鍵
Python爬蟲 - Selenium(7)多窗口切換 詳細介紹Selenium是如何實現(xiàn)在不同的窗口之間自由切換
Python爬蟲 - Selenium(8)frame/iframe表單嵌套頁面 詳細介紹如何從當前定位的主體切換為frame/iframe表單的內(nèi)嵌頁面中
Python爬蟲 - Selenium(9)警告框(彈窗)處理 詳細介紹如何定位并處理多類警告彈窗
Python爬蟲 - Selenium(10)下拉框處理 詳細介紹如何靈活的定位并處理下拉框
Python爬蟲 - Selenium(11)文件上傳 詳細介紹如何優(yōu)雅的通過send_keys()指定文件進行上傳
Python爬蟲 - Selenium(12)獲取登錄Cookies,并添加Cookies自動登錄 詳細介紹如何獲取Cookies和使用Cookies進行自動登錄
Python爬蟲 - Selenium(13)設(shè)置元素等待 詳細介紹如何優(yōu)雅的設(shè)置元素等待時間,防止程序運行過快而導(dǎo)致元素定位失敗
Python爬蟲 - Selenium(14)窗口截圖 詳細介紹如何使用窗口截圖
Python爬蟲 - Selenium(15)關(guān)閉瀏覽器 詳細介紹兩種關(guān)閉窗口的區(qū)別

到此這篇關(guān)于Python爬蟲中Selenium實現(xiàn)文件上傳的文章就介紹到這了,更多相關(guān)Selenium 文件上傳內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python使用LRU緩存策略進行緩存的方法步驟

    Python使用LRU緩存策略進行緩存的方法步驟

    本文主要介紹了Python使用LRU緩存策略進行緩存的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Python2.X/Python3.X中urllib庫區(qū)別講解

    Python2.X/Python3.X中urllib庫區(qū)別講解

    本篇文章通過對比給大家詳細講解了在Python2和Python3中urllib庫區(qū)別以及用法講解,有需要的朋友跟著學(xué)習(xí)下吧。
    2017-12-12
  • python實現(xiàn)停車場管理系統(tǒng)

    python實現(xiàn)停車場管理系統(tǒng)

    這篇文章主要為大家詳細介紹了python實現(xiàn)停車場管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Python操作SQLite數(shù)據(jù)庫的方法詳解【導(dǎo)入,創(chuàng)建,游標,增刪改查等】

    Python操作SQLite數(shù)據(jù)庫的方法詳解【導(dǎo)入,創(chuàng)建,游標,增刪改查等】

    這篇文章主要介紹了Python操作SQLite數(shù)據(jù)庫的方法,簡單說明了sqlite數(shù)據(jù)庫的相關(guān)概念,并結(jié)合實例形式較為詳細的分析了Python針對sqlite數(shù)據(jù)庫的導(dǎo)入,創(chuàng)建,游標,增刪改查等操作技巧,需要的朋友可以參考下
    2017-07-07
  • 關(guān)于python字符串方法分類詳解

    關(guān)于python字符串方法分類詳解

    在本篇文章里小編給各位整理的是關(guān)于關(guān)于python字符串方法分類的知識點內(nèi)容,有興趣的朋友們學(xué)習(xí)下。
    2019-08-08
  • python imutils包基本概念及使用

    python imutils包基本概念及使用

    python imutils包可以很簡潔的調(diào)用opencv接口,輕松實現(xiàn)圖像的平移,旋轉(zhuǎn),縮放,骨架化等操作,對python imutils包基本概念及使用方法感興趣的朋友一起看看吧
    2021-07-07
  • PyQt5實現(xiàn)拖放功能

    PyQt5實現(xiàn)拖放功能

    這篇文章主要為大家詳細介紹了PyQt5實現(xiàn)拖放功能,拖放一個按鈕的實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Python 中打印字典中的所有鍵值對的示例詳解

    Python 中打印字典中的所有鍵值對的示例詳解

    這篇文章主要介紹了Python輸出字典的鍵和值,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • Python-OpenCV實戰(zhàn):利用 KNN 算法識別手寫數(shù)字

    Python-OpenCV實戰(zhàn):利用 KNN 算法識別手寫數(shù)字

    K-最近鄰(KNN)是監(jiān)督學(xué)習(xí)中最簡單的算法之一,KNN可用于分類和回歸問題。本文將為大家介紹的是通過KNN算法實現(xiàn)識別手寫數(shù)字。文中的示例代碼介紹詳細,需要的朋友可以參考一下
    2021-12-12
  • Python如何使用內(nèi)置庫matplotlib繪制折線圖

    Python如何使用內(nèi)置庫matplotlib繪制折線圖

    這篇文章主要介紹了Python如何使用內(nèi)置庫matplotlib繪制折線圖,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02

最新評論

象州县| 惠东县| 新兴县| 广汉市| 辽宁省| 怀柔区| 桦南县| 于都县| 塔城市| 塔河县| 河南省| 湖口县| 沅陵县| 宿迁市| 黔西| 锡林浩特市| 屏东县| 灵璧县| 历史| 集安市| 石棉县| 隆回县| 双柏县| 罗源县| 旬阳县| 仁布县| 岱山县| 凤冈县| 澎湖县| 威海市| 云和县| 柳州市| 白沙| 乐至县| 翁牛特旗| 潼南县| 辉县市| 肥乡县| 东港市| 聂拉木县| 平山县|