Selenium(C#)实现图片上传的两种方式

上一篇 / 下一篇  2016-08-26 13:26:05 / 个人分类:Selenium

    在用Selenium Webdriver实现自动化测试时,会遇到上传图片的问题,下面介绍两种实现方式:  

一、直接利用Selenium实现。

如果测试对象直接使用file类型的input实现图片上传,例如:<input type="file" name="filename">,我们可以利用Selenium提供的方法实现文件上传。

IWebElement webElement = driver.FindElement(By.Id("filename"))

webElement.SendKeys(filePath);

这种方式是使用SendKeys方法将文件路径filePath(相对或者绝对)传给file元素,就可以绕过选择窗口直接上传图片了。

 

二、利用AutoIt实现。

1.AutoIt是一款利用模拟键盘按键,鼠标移动和窗口/控件的组合实现自动化操作的软件。

下载地址:https://www.autoitscript.com/site/autoit/downloads/

2.AutoIt实现上传过程

1>打开AutoIt Windows Info工具,鼠标点击Finder Tool,鼠标将变成一个小风扇形状的图标,按住鼠标左键拖动到需要识别的控件上

2.1 AutoIt Windows Info识别文件名输入控件

2.2 AutoIt Windows Info识别“打开”按钮控件

获得如下信息:

2>使用SciTE Script. Editor编辑器编写脚本,如下所示:

;ControlFocus("title","text",controlID) Edit1=Edit instance 1

ControlFocus("打开", "","Edit1")

 

; Wait 10 seconds for the Upload window to appear

  WinWait("[CLASS:#32770]","",10)

 

; Set the File name text on the Edit field

  ControlSetText("打开", "", "Edit1", "E:\img\1.JPG")

 

  Sleep(2000)

 

; Click on the Open button

  ControlClick("打开", "打开(&O)","Button1");

 

                        2.3SciTE Script. Editor编写脚本

AutoIt脚本完成后,可以通过菜单“Tools->Go”运行脚本(运行时上传窗口处于打开状态)。

说明:

ControlFocus()方法用于识别Window窗口,参数与识别信息的对应关系如图2.3所示;

WinWait()设置10秒钟用于等待窗口的显示,其用法与WebDriver所提供的ImplicitlyWait()类似;

ControlSetText()用于向文件名输入框内输入本地文件的路径;

Sleep()方法与C#Thread.Sleep()方法用法一样,也以毫秒为单位,Sleep(2000)表示固定休眠2秒;

ControlClick()用于点击上传窗口中的打开按钮。

3>脚本运行正常后,将其保存为au3格式文件,然后打开Compile Script. to.exe工具,生成exe程序,方便C#程序调用。

4>通过C#Process.Start()方法调用exe程序并执行

备注:该方法需要添加引用:using System.Diagnostics;

 


TAG: 图片上传 Selenium

在下何苗,有何贵干? 引用 删除 hemiaoer   /   2016-08-26 17:03:21
mark
 

评分:0

我来说两句

Open Toolbar