Python爬⾍中Selenium实现⽂件上传
前⾔:⼤部分的⽂件上传功能都是⽤input标签实现,这样就完全可以把它看作⼀个输⼊框,可以通过send_keys()指定⽂件进⾏上传了。
本章中⽤到的关键⽅法如下:
send_keys():上传⽂件或者输⼊⽂本
from selenium import webdriver
import time
driver = webdriver.Chrome()
<('file.yiyuen/file/')
# 定位上传按钮,添加本地⽂件
driver.find_element_by_name("files").send_keys('D:\\')
time.sleep(10)
driver.quit()
Web上本地上传图⽚,弹出的框Selenium是⽆法识别的,也就是说,selenium本⾝没有直接的⽅法去实现上传本地⽂件,这⾥总结了两种上传⽂件的⽅式。
⼀、利⽤Robot类处理⽂件上传。
其⼤致流程可以为:
1、利⽤selenium点击web上本地⽂件的上传按钮;
2、在弹出的弹框中,⽂件路径输⼊框默认的是光标的聚焦,将⽂件在磁盘上的路径通过拷贝和黏贴的⽅法写上去。
3、通过按下回车,默认触发弹框的确定按钮,完成⽂件上传的功能。
这⾥以百度⾸页的利⽤图⽚搜索为例:
打开百度⾸页,搜索按钮左侧有⼀个照相机的图标,点击可以选择图⽚搜索,我们通过本地上传图⽚的过程来模拟⽂件⾃动化上传操作。准备条件,在百度图⽚搜索⼀个图⽚,保存到桌⾯,例如到⼀个关于selenium的图⽚,然后保存在桌⾯,名称为selenium.jpg。
相关实现代码如下:
package first;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.datatransfer.StringSelection;
import java.awt.event.KeyEvent;
import urrent.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);
<("www.baidu");
//指定图⽚路径
StringSelection selection=new StringSelection("C:\\Users\\你的⽤户名\\Desktop\\selenium.jpg");
//把图⽚路径复制到剪切板
System.out.println("selection"+selection);
//点击照相机这个⼯具
driver.findElement(By.xpath("//*/span[@class='soutu-btn']")).click();
//点击本地上传图⽚
driver.findElement(By.xpath("//*/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上传⽂件
以上是第⼀种⽅的实现,第⼆种⽅式是利⽤AutoIt这个⼯具。这是⼀个能⽀持桌⾯GUI⾃动化的⼯具,它⽀持脚本语⾔编写。在Selenium脚本中如果需要AutoIt来协助这个⽂件上传功能,⼤概步骤是这样的:
1. Selenium点击web产品上的⽂件上传按钮,弹窗上传框。
2.执⾏AutoIt实现准备好的脚本⽂件,这个脚本⽂件写了关于上传什么⽂件的⼀个.exe⽂件。autoit
在⼀切测试⼯作之前,我们先下载和安装AutoIt。
1)打开AutoIt的官⽹下载地址
2)点击下载zip,当然也可以下载Editor。
解压得到的效果如图:
3)点击SciTe⽂件夹,我们打开脚本编辑器。双击
4)打开百度图⽚上传窗⼝,同时打开AutoIt 脚本编辑器和元素定位器。拖动元素定位器上那个靶点形状按钮到⽂件上传弹窗,能够捕获到⼀些元素信息。
5)在AutoIt脚本编辑器⾥输⼊如下脚本,绿⾊部分为解释的,不需要写。
6)编译成⼀个.exe⽂件
先保存到本地,例如默认路径保存,名称为UploadFile.au3,然后在AutoIt脚本编辑器中点击Tools菜单,选择compile,会在同路径下⽣成⼀个的⽂件,待会在Selenium脚本要使⽤。
7)Selenium脚本执⾏⽂件,观察⽂件是否上传。
package first;
import urrent.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);
<("www.baidu");
//点击照相机这个⼯具
driver.findElement(By.xpath("//*/span[@class='soutu-btn']")).click();
//点击本地上传图⽚
driver.findElement(By.xpath("//*/div[@class='upload-wrap']")).click();
// 执⾏桌⾯的AutoIt 封装的脚本
}
}
我⽤的是⽕狐62,最终的效果如图所⽰:
Selenium ⽂集传送门:
标题
简介Python 爬⾍ - Selenium (1)安装和简单使⽤详细介绍Selenium 的依赖环境在Windows 和Centos7上的安装及简单使⽤Python 爬⾍ - Selenium (2)元素定位和WebDriver 常⽤⽅法详细介绍定位元素的8种⽅式并配合点击和输⼊、提交、获取断⾔信息等⽅法的使⽤
Python 爬⾍ - Selenium (3)控制浏览器的常⽤⽅法详细介绍⾃定义浏览器窗⼝⼤⼩或全屏、控制浏览器后退、前进、刷新浏览器等⽅法的使⽤

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。