2014年12月26日星期五

selenium借助AutoIt识别上传(下载)详解 - 虫师

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
selenium借助AutoIt识别上传(下载)详解 - 虫师  阅读原文»

  AutoIt目前最新是v3版本,这是一个使用类似BASIC脚本语言免费软件,它设计用于Windows GUI(图形用户界面)中进行自动化操作。它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务。

官方网站:https://www.autoitscript.com/site/

从网站上下载AutoIt并安装,安装完成在菜单中会看到图4.13的目录:

图4.13 AutoIt菜单

AutoIt Windows Info 用于帮助我们识Windows控件信息。

Compile Script to.exe 用于将AutoIt生成 exe 执行文件。

Run Script 用于执行AutoIt脚本。

SciTE Script Editor 用于编写AutoIt脚本。

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>upload_file</title>
<link href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet" />
</head>
<body>
<div class="row-fluid">
<div class="span6 well">
<h3>upload_file</h3>
<input type="file" name="file" />
</div>
</div>
</body>
<script src="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.js"></script>
</html>

将上面的html代码保存为uplad.html文件,通过浏览器打开,效果如下:

下面以操作upload.html上传弹出的窗口为例讲解AutoIt实现上传过程。

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

图4.14 AutoIt Windows Info识别“文件名”输入框控件

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

如图4.14、4.15,通过AutoIt Windows Info 获得以下信息。

窗口的title为“选择要加载的文件”,标题的Class为“#32770”。

文件名输入框的class 为“Edit”,Instance为“1” ,所以ClassnameNN为“Edit1”。

打开按钮的class 为“Button”,Instance为“1” ,所以ClassnameNN为“Button1”。

2、根据AutoIt Windows Info 所识别到的控件信息打开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", "D:\\upload_file.txt")

Sleep(2000)

; Click on the Open button

ControlClick("选择要加载的文件", "","Button1");

  ControlFocus()方法用于识别Window窗口。WinWait()设置10秒钟用于等待窗口的显示,其用法与WebDriver 所提供的implicitly_wait()类似。ControlSetText()用于向“文件名”输入框内输入本地文件的路径。这里的Sleep()方法与Python中time模块提供的Sleep()方法用法一样,不过它是以毫秒为单位,Sleep(2000)表示固定休眠2000毫秒。ControlClick()用于点击上传窗口中的“打开”按钮。

  AutoIt的脚本已经写好了,可以通过菜单栏“Tools”-->“Go” (或按键盘F5)来运行一个脚本吧!注意在运行时上传窗口当前处于打开状态。

  3、脚本运行正常,将其保存为upfile.au3,这里保存的脚本可以通过Run Script 工具将其打开运行,但我们的目的是希望这个脚本被Python程序调用,那么就需要将其生成exe程序。打开Compile Script to.exe工具,将其生成为exe可执行文件。如图4.16,

图4.16 Compile Script to.exe生成exe程序

点击“Browse”选择upfile.au3文件,点击“Convert”按钮将其生成为upfile.exe程序。

4、下面就是通过自动化测试脚本调用upfile.exe程序实现上传了。

#coding=utf-8
from selenium import webdriver
import os

driver
= webdriver.Firefox()

#打开上传功能页面
file_path = 'file:///' + os.path.abspath('upfile.html')
driver.get(file_path)

#点击打开上传窗口
driver.find_element_by_name("file").click()
#调用upfile.exe上传程序
os.system("D:\\upfile.exe")

driver.quit()[C#]Hosting Process (vshost.exe) - wolfy  阅读原文»

写在前面

最近在群里,有朋友问起这个vshost.exe进程到底是什么?当时确实不知道是个什么东东,给人的感觉是,经常看到它,就是在启动一个项目的时候,经常看到它,就是没细研究它是啥玩意儿。既然遇到了,就不能放过,就要研究个一二。

vshost.exe

通过名字Hosting Process我们可以翻译为:宿主进程。

The hosting process is a feature in Visual Studio 2005 that improves debugging performance, enables partial trust debugging, and enables design time expression evaluation. The hosting process files contain vshost in the file name and are placed in the output folder of your project. For more information, seeDebugging and the Hosting Process.

宿主进程是vs2005中一个特性,用来提高调试效率,在设计时进行表达式运算和Partial-Trust调试。宿主进程文件以x.vshost.exe命名,并且存放在项目的输出目录中。例如:

Hosting process files (.vshost.exe) are for use by Visual Studio 2005 and should not be run directly or deployed with your application..

宿主进程文件(.vshost.exe)是vs2005使用的,不能脱离您的应用程序直接运行。

提高调试效率

宿主进程(vshost.exe)创建一个与当前应用调试器相关联的应用域(Application Domain),执行这个操作很明显将增加开始调试到应用程序启动之间的时间,但是宿主进程可以通过这个应用域来提高调试效率和在应用运行期间保存应用域和调试器的状态。

Design-Time Expression Evaluation

现在你可以不需要运行应用程序,就可以在 Immediate 窗口进行代码测试。

Partial Trust 调试

应用程序可以通过 Project Designer 的安全设置页面指定为一个Partial Trust应用,调试这类型的应用需要特别初始化应用域,而该初始化工作由vshost.exe来完成。

可以通过如下操作禁用该进程

参考文章

http://msdn.microsoft.com/en-US/library/ms185331(v=vs.80).aspx


本文链接:[C#]Hosting Process (vshost.exe),转载请注明。

阅读更多内容

没有评论:

发表评论