使用IE浏览器进行Web应用自动化

Win32::IEAutomation –使用IE浏览器进行Web应用自动化

1
2
3
翻译:sxw
Email:sxw2k@sian.com
Date:2012-3-23

概要

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
use Win32::IEAutomation;

#创建新的Internet Explorer实例
my $ie = Win32::IEAutomation->new( visible => 1, maximize => 1);

# 网站导航
$ie->gotoURL('http://www.google.com');

# 查找超链接并点击
# 使用'linktext:'选项 (网页上显示的链接的文字)
$ie->getLink('linktext:', "About Google")->Click;
# 或使用'linktext:' 带有正则表达式匹配的选项
$ie->getLink('linktext:', qr/About Google/)->Click;
#或使用 'id:' 选项 ( <a id=1a class=q href=......>)
$ie->getLink('id:', "1a")->Click;

#查找复选框并选择
#使用 'name:'选项 ( <input type = "checkbox" name = "checkme" value = "1"> )
$ie->getCheckbox('name:', "checkme")->Select;
# 或使用'aftertext:' option (网页上在某些文字后的复选框for checkbox after some text on the web page)
$ie->getCheckbox('aftertext:', "some text here")->Select;

#查找文本域并输入数据
#使用 'name:'选项 ( <input type="text" name="username" .......> )
$ie->getTextBox('name:', "username")->SetValue($user);

# 查找按钮并点击
# 使用 'caption:'选项(caption的意思是标题)
$ie->getButton('caption:', "Google Search")->Click;

# Accessing controls under frame在框架下访问控制
$ie->getFrame("name:", "content")->getLink("linktext:", "All Documents")->Click;

#嵌套框 Nested frames
$ie->getFrame("name:", "first_frame")->getFrame("name:", "nested_frame");

# 捕获弹出菜单作为一个新的窗口并取得控制
my $popup = $ie->getPopupWindow("title of popup window");
$popup->getButton('value:', "button_value")->Click;

此外,它提供了与安全警告对话框、确认对话框、登陆对话框等交互的方法。

1
2
3
4
5
6
7
8
9
#导航到某些安全网站并按下安全警告对话框的’YES’按钮
use Win32::IEAutomation;
use Win32::IEAutomation::WinClicker; # 这会提供与对话框交互的方法
my $ie = Win32::IEAutomation->new();
$ie->gotoURL("https://some_secure_site.com", 1); #
#第二个参数‘1’的意思是不等待文档全部加载完毕并允许代码跳到下一行
my $clicker = Win32::IEAutomation::WinClicker->new();
$clicker->push_security_alert_yes();
$ie->WaitforDone; # 此处我们会等待导航的网站全部加载完毕

描述

这个模块试图在Windows平台上使用IE浏览器进行Web应用自动化。它在内部使用Win32::OLE为IE创建自动化对象。它驱使IE浏览器使用它的DOM属性和方法。该模块允许用户与诸如链接、按钮、单选框、复选框和文本域等网页控制进行交互。它也支持框架、弹出窗口,并与如安全警告、确认对话框、警告对话框等Javascript对话框进行交互。

方法:
结构和类方法

1
Win32::IEAutomation->new( visible => 1, maximize => 1, warnings => 1 )

这是通过Win32::OLE构造的新的Internet Explorer 实例。调用此函数将创建一个Perl对象,它内部包含Internet Explorer的自动化对象。该方法的参数是散列格式的3个选项。这3个选项都是可选的.

  • visible

它设置IE浏览器窗口的可见性. 默认值为1, 意思是如果你不提供这个选项就默认可见。你可以将它设置为0让使IE浏览器以隐藏模式运行。

  • maximize

默认值为0,意思是它以上次浏览器窗口的大小运行。设置为1会最大化窗口。

  • warnings

默认值为 0.如果你想对任何找不到的对象打印警告信息,就把它设置为1,这是可选的。
.

  • gotoURL($url, [$nowait])

如果没有提供第二个参数这个方法就定位到指定的URL,并等待它被完全加载完毕。第二个参数是可选的,并且它代表不等待页面全部加载的布尔值。给第二个参数设置为1(真布尔值),则在该gotoURL方法中代码不会等待页面全部加载 。这对于和诸如安全警告之类对话框的交互很有用。这种情况下使用该方法的第二个参数,然后与对话框交互(下面会描述与对话框交互的方法)最后使用’WaitforDone’方法等待IE完全加载页面。

  • Back()
    像IE的返回按钮一样,等待网页完全加载完毕。
  • Reload()
    像IE的刷新按钮一样,并等待网页完全加载完毕。
  • URL()
    这会返回当前文档的URL
  • Title()
    这会返回当前文档的标题
  • Content()
    这会返回当前文档的HTML。在标量上下文会返回一个单一的字符串(带有\n符号),在列表上下文,会返回一个数组。请注意所有的标签都是大写的。

  • VerifyText($string, [iflags])
    验证给定字符串是否在当前文档的文本中出现,成功返回1,失败返回undefined.第二个参数ifags是可选的,它是个整数值,指定一个或多个如下标志以表明搜索类型:
    0 默认值 匹配部分单词.

1
2
3
1           向后匹配
2 只匹配整个单词.
4 区分大小写匹配.
  • PageText()

它返回当前页的文本(没有html标签)。在标量上下文返回一个单一字符串(带有\n符号)在列表送上下文中返回数组。

这会帮助VerifyText方法的使用。用户可以打印返回的数组到某个文件中,并查看可以给VerifyText 方法传递什么样的字符串参数。

  • WaitforDone()

等待直到IE浏览器结束忙碌状态并且文档被全部加载。在我们继续之前,这会每隔一秒钟对IE进行查询并检查它的繁忙状态和文档完整性状态。

  • closeIE()
    这会关闭IE实例

  • getAgent()
    它会返回一个对IE自动化对象的引用,该引用使用Win32::OLE创建

链接方法

  • getLink($how, $what)
    该方法用于访问网页上的链接。它返回包含html链接元素的Win32::IEAutomation::Element 对象。

  • $how : 这个选项是你如何访问链接

  • $what : 这是字符串或整数,是你要找的东西。为此,它也支持使用perl的qr操作符的模式匹配(看下面的例子)
    使用$how的有效选项:

  • ‘linktext:’ - 通过匹配链接文本查找链接

  • ‘id:’ -通过匹配id属性查找链接

  • ‘name:’ -通过匹配名字属性查找链接
  • ‘linkurl:’ -通过匹配链接的url属性查找链接
  • ‘class:’ -通过匹配类属性查找链接

典型用法:

1
2
3
$ie->getLink('linktext:', "Sign in"); # 访问使用’Sign in’作为文本的链接
$ie->getLink('linktext:', qr/About Google/); #访问文本匹配'About Google'的链接
$ie->getLink('id:', 5); #访问其id属性值为5的链接
  • getAllLinks()
    这会以Win32::IEAutomation::Element对象的形式返回出现在当前文档中的所有链接。对于返回值,在标量上下文中,给出链接出现的数目,在列表上下文中,返回一个数组,元素是所有的链接对象。数组中的每个对象与我们使用getLink方法中的对象类似。
     链接对象支持的方法
     Click($nowait);
    点击链接并等待直到文档完全加载。因为它使用DOM的click方法,所以它支持点击带有javascript的链接。
    $nowait: 这是可选的。给该参数设置为1(真布尔值),则代码在点击链接后,不等待页面完全加载。如果你需要在点击链接后和诸如登陆对话框等任何对话框交互时这很有用(请查看logon()方法获取详情)
     linkText();
    返回链接的文本
     linkUrl();
    返回链接的url
     getProperty($property)
    检索链接对象给定属性的值。这使得取得html链接支持的任何属性的值变得容易了。.
    图像方法
     getImage($how, $what)
    该方法用于访问网页上的图像。它返回Win32::IEAutomation::Element 对象,该对象包含了html图像元素。
    $how : 这个选项是以何种方式访问图像
    $what : 这是个字符串或整数,是你在查找的东西。为此,它也支持使用Perl的’qr’操作符的模式匹配。
    使用$how的有效选项:
    ‘id:’ –通过匹配id属性查找图像
    ‘name:’ -通过匹配名字属性查找图像
    ‘imgurl:’ -通过匹配图像的src属性属性查找图像
    ‘alt:’ -通过匹配图像的alt属性查找图像
    ‘class:’ -通过匹配类属性查找图像
    典型用法:
1
2
3
$ie->getImage('imgurl:', qr/logo.gif$/);  #访问src匹配/logo.gif$/的图像
$ie->getImage('alt:', "Google"); #访问alt属性是’Google’ 的图像
$ie->getImage('class:', $some_class); #访问类属性值为$some_class的图像

 getAllImages()
这会以Win32::IEAutomation::Element对象的形式返回出现在当前文档中的所有图像。对于返回值,在标量上下文中,给出图像出现的数目,在列表上下文中,返回一个数组,元素是所有的图像对象。数组中的每个对象与我们使用getImage方法中的对象类似。
 图像对象支持的方法
 Click($nowait)
点击图像并等待直到文档完全加载。因为它使用DOM的click方法,所以它支持点击带有javascript的链接。
$nowait: 这是可选的。给该参数设置为1(真布尔值),则代码在点击图像后,不等待页面完全加载。如果你需要在点击图像后和诸如登陆对话框等任何对话框交互时这很有用(请查看logon()方法获取详情)

 imgUrl()
返回图像的url
 getProperty($property)
为图像对象检索给定属性的值。这使得取得html图像支持的任何属性的值变得容易了。
按钮方法
 getButton($how, $what)
该方法用于访问网页上的按钮。它返回Win32::IEAutomation::Element 对象,该对象包含html输入type=button或提交元素。

$how : 这个选项是你如何访问按钮

$what : 这是字符串或整数,是你要找的东西。为此,它也支持使用perl的qr操作符的模式匹配(看下面的例子)
使用$how的有效选项:
‘id:’ –通过匹配id属性查找按钮
‘name:’ -通过匹配名字属性查找按钮
‘value:’ -通过匹配value属性查找按钮
‘caption:’ – 通过匹配按钮上显示的文字查找按钮
‘class:’ –通过匹配类属性查找按钮
如果你查询的选项有多于一个的按钮并有同样的值,则它返回集合的第一个按钮。
典型用法:

1
2
$ie->getButton('caption:', "Google Search"); #访问带有'Google Search'文字的按钮 
$ie->getButton('name:', "btnG"); # 访问名字属性是’btnG’的按钮

 按钮对象支持的方法
 Click($nowait)
点击按钮并等待直到文档完全加载。
$nowait: 这是可选的。给该参数设置为1(真布尔值),则代码在点击按钮后,不等待页面完全加载。如果你需要在点击按钮后和诸如登陆对话框等任何对话框交互时这很有用(请查看logon()方法获取详情)
 getProperty($property)
检索按钮对象给定属性的值。这使得取得html按钮支持的任何属性的值变得容易了。
单选框和复选框方法
 getRadio($how, $what)
该方法用于访问网页上的单选框。它返回Win32::IEAutomation::Element 对象,该对象包含html输入type=radio元素。

 getCheckbox($how, $what)
该方法用于访问网页上的复选框。它返回Win32::IEAutomation::Element 对象,该对象包含html输入type=checkbox元素。

$how : 这个选项是以何种方式访问单选框或复选框
$what : 这是个字符串或整数,是你在查找的东西。为此,它也支持使用Perl的’qr’操作符的模式匹配。
使用$how的有效选项:
‘id:’ –通过匹配id属性查找单选框或复选框
‘name:’ – 通过匹配名字属性查找单选框或复选框
‘value:’ -通过匹配值属性查找单选框或复选框
‘class:’ -通过匹配类属性查找单选框或复选框
‘index:’ – 在所有单选框或复选框中使用索引查找单选框或复选框’beforetext: ‘ -在指定文本的前面查找单选框或复选框.
‘aftertext:’ –在指定文本的后面查找单选框或复选框
如果你查询的选项有多于一个的对象并有同样的值,则它返回集合的第一个对象。
典型用法:

1
2
3
4
5
$ie->getRadio('beforetext:', "Option One"); #访问出现在文本’Option One’前的单选框 
$ie->getRadio('value:', $radio_value); # 访问值属性为$radio_value的单选框
$ie->getCheckbox('aftertext:', "Remember Password");
# 访问出现在文字’ Remember Password'之后的复选框
$ie->getCheckbox('index:', 3); #访问当前网页复选框集合中的第三个复选框

 单选框或复选框对象支持的方法
 Select()
该方法选择指定的单选框或复选框,假设还没有选择的话

1
$ie->getRadio('beforetext:', "Option One")->Select;

 deSelect()
该方法取消选择单选框或复选框,假设还没有取消选择的话。
$ie->getCheckbox(‘aftertext:’, “Remember Password”)->deSelect;
 getProperty($property)
检索单选框或复选框对象给定属性的值。这使得取得html单选框或复选框支持的任何属性的值变得容易了。

选择列表方法
 getSelectList($how, $what)
该方法用于访问网页上的选择列表。它返回Win32::IEAutomation::Element 对象,该对象包含html select元素。
$how : 这个选项是以何种方式访问选择列表
$what : 这是个字符串或整数,是你在查找的东西。为此,它也支持使用Perl的’qr’操作符的模式匹配。
使用$how的有效选项:
‘id:’ - 通过匹配id属性查找选择列表
‘name:’ -通过匹配名字属性查找选择列表
‘class:’ -通过匹配类属性查找选择列表
‘index:’ -在所有选择列表集合中使用索引查找选择列表
‘beforetext:’ –在指定文本的前面查找选择列表
‘aftertext:’ -在指定文本的后面查找选择列表
如果你查询的选项有多于一个的对象并有同样的值,则它返回集合的第一个对象。

典型用法:

1
2
3
$ie->getSelectList('aftertext:', "some text"); #访问出现在’some text’ 文本之后的选择列表
$ie->getSelectList('name:', 'time_zone'); #访问名字属性为’time_zone’的选择列表
$ie->getSelectList('index:', 3); #访问当前网页选择列表集合中的第三个选择列表

 选择列表对象支持的方法
 SelectItem()

该方法从选择列表中选择一个或多个项目。你可以给该方法传递一个或多个项目。提供项目的名字在网页上对用户是可见的(而不是html 代码)。只有在选择列表支持多重选择时,才能使用该方法用于多项目选择。

$ie->getSelectList(‘name:’, ‘time_zone’)->SelectItem(“India”);

#在选择列表中选择一个”India” 项目
$ie->getSelectList(‘name:’, ‘time_zone’)->SelectItem(“India”, “U. S. A.”, “Australia”); #在选择列表中选择”India”, “U. S. A.” 和 “Australia”三个项目
 deSelectItem()
该方法从选择列表中取消选择一个或多个项目。你可以传递单一项目或多个项目给该方法。在网页上提供用户可见的项目的名字(而不是html代码)

$ie->getSelectList(‘name:’, ‘time_zone’)->deSelectItem(“India”);

在选择列表中取消选择一个”India”项目。

$ie->getSelectList(‘name:’, ‘time_zone’)->deSelectItem(“India”, “U. S. A.”, “Australia”);

在选择列表中取消选择”India”, “U. S. A.” 和 “Australia”三个项目

 deSelectAll()

该方法从选择列表中取消选择所有项目。调用该方法时不使用任何参数。当选择列表使用随机选取的项目出现时,你需要取消选择这个项目,这是有用的。

$ie->getSelectList(‘name:’, ‘time_zone’)->deSelectAll();

#在选择列表中取消选择所有项目

getProperty($property)
检索选择列表对象给定属性的值。这使得取得html选择列表支持的任何属性的值变得容易了。
文本框和文本域方法
 getTextBox($how, $what)
该方法用于访问网页上的输入文本框。它返回Win32::IEAutomation::Element 对象,该对象包含html输入type=text或密码元素。此外,该方法也用于文件上传文本框(例如:input type=file)

 getTextArea($how, $what)
该方法用于访问网页上的输入文本域。它返回Win32::IEAutomation::Element 对象,该对象包含html textarea元素。

$how : 这个选项是以何种方式访问选择列表
$what : 这是个字符串或整数,是你在查找的东西。为此,它也支持使用Perl的’qr’操作符的模式匹配。
使用$how的有效选项:
‘id:’ – 通过匹配id属性查找文本框
‘name:’ -通过匹配名字属性查找文本框
‘value:’ -通过匹配value属性查找文本框
‘class:’ -通过匹配类属性查找文本框
‘index:’ - 在所有文本域集合中使用索引查找文本框
‘beforetext:’ -在指定文本的前面查找文本框
‘aftertext:’ -在指定文本的后面查找文本框
如果你查询的选项有多于一个的对象并有同样的值,则它返回集合的第一个对象。
典型用法:
$ie->getSelectList(‘aftertext:’, “User Name:”);

#访问在文本’User Name:’之后出现的文本框
$ie->getSelectList(‘name:’, ‘password’);

#访问名字属性为’password’的文本框
$ie->getSelectList(‘index:’, 3); #访问当前网页文本域集合中的第三个文本框

 文本框对象支持的方法
 SetValue($string)
这会为文本框或文本域设置成给定的字符串。
$ie->getTextBox(‘name:’, “q”)->SetValue(“web automation”);

#这会在输入文本框中写入文本’web automation’
$ie->getTextBox(“name:”, “importFile”)->SetValue(“C:\temp\somefile”);

#在文件上传文本框中设置某些文件

 GetValue()
这会返回在文本框或文本域中出现的默认文本。
$ie->getTextBox(‘name:’, “q”)->GetValue() # 返回在文本框中出现的默认文本

 ClearValue()
这会清除文本框.
$ie->getTextBox(‘name:’, “q”)->ClearValue() #这会清除输入文本框
 getProperty($property)
.检索文本框对象中给定属性的值。这让获取任何html 输入文本框支持的属性变得容易。
表格方法
 getTable($how, $what)
该方法用于访问网页中的表格。它返回一个Win32::IEAutomation::Table 对象,该对象包含html表格。
$how : 这个选项是以何种方式访问链接
$what : 这是个字符串或整数,是你在查找的东西。为此,它也支持使用Perl的’qr’操作符的模式匹配。
使用$how的有效选项:
‘id:’ –通过匹配id属性查找表格
‘name:’ -通过匹配名字属性查找表格
‘value:’ -通过匹配value属性查找表格
‘class:’ -通过匹配类属性查找表格
如果你查询的选项有多于一个的对象并有同样的值,则它返回集合的第一个对象。
典型用法:
$ie->getTable(“id:”, “1a”); #访问id属性为’1a’的表格
$ie->getTable(“class:”, “data”) # 访问类属性是’data’的表格
 getAllTables()
这会返回数组,包含网页上的所有表格。数组的每个元素是一个Win32::IEAutomation::Table 对象。
典型用法:
my @alltables = $ie->getAllTables;
 表格对象支持的方法
 rows([index of row])
该方法从表格中返回行对象(object/objects).它接受一个可选参数,即你想获取的行的索引号。如果不带任何参数地使用该方法,则会返回表格中的行对象数组。如果你提供一个参数,则它返回一个标量行对象出现在指定的索引中。行计数包含标题行。
典型用法:
my @all_rows = $table_object->rows; # 获取表格中的所有行对象集合
my $third_row = $table_objects->rows(3) # 获取表格的第三行
 getRowHavingText($string);
该方法返回一个单一的包含指定文本的行对象。如果文本字符串出现在表格中的任一行,就返回那个行对象。该方法支持使用Perl的’qr’操作符模式匹配。

典型用法:
my $target_row = $table_object->getRowHavingText(“Last Name:”);

#访问含有文本”Last Name:”的行,它会尝试匹配精确的字符串。
my $target_row = $table_object->getRowHavingText(qr/First Name:/);

#通过模式匹配文本”First Name:”访问表格中的行
 tableCells([$row, $column])
该方法返回表格中出现的所有单元格对象的数组。数组中的每个元素是一个单元格对象。此外,它也支持2个可选的参数,第一个参数是行的索引,第二个参数是列的索引。当使用这两个参数时,它使用行和列索引的组合返回一个标量单元格对象。
典型用法:
my @allcells = $table_object->tableCells; # 将所有单元格对象存入数组中
my $target_cell = $table_object->tableCells(2, 5); # 获取第二行第五列的单元格

 行对象支持的方法
 cells([index of cell])
该方法返回单元格中出现的所有单元格对象的数组。此外,它接受一个可选参数,即单元格索引。如果不带任何参数地使用该方法,则会返回一个数组,包含那一行所有的单元格对象。如果你提供一个参数,则它返回一个以指定索引出现的标量单元格对象。
典型用法:
my @all_cells = $row_object->cells; # 将该行的单元格对象存入数组
my $third_cell = $table_objects->cells(3) # 获取该行的第三个单元格
 单元格对象支持的方法
 cellText
这返回单元格中出现的文本。
典型用法:
$text = $cell_object->cellText; # 取得单元格中出现的文本
 除此之外, 在链接方法,图像方法,按钮方法,单选框和复选框方法,选择列表方法,文本框和文本域方法之下列出的所有方法都支持单元格对象。
框架方法
 getFrame($how, $what)
It will return the Win32::IEAutomation object for frame document. Frame document is having same structure as that of parent IE instance, so all methods for link, button, image, text field etc. are supported on frame object.
$how : 这个选项是以何种方式访问选择列表
$what : 这是个字符串或整数,是你在查找的东西。为此,它也支持使用Perl的’qr’操作符的模式匹配。
使用$how的有效选项:
‘id:’ – 通过匹配id属性查找frame
‘name:’ -通过匹配name属性查找frame
‘value:’ -通过匹配value属性查找frame
‘class:’ -通过匹配类属性查找frame
典型用法:
$ie->getFrame(‘id:’, “f1”); # 访问id属性为’f1’的frame
$ie->getFrame(‘name:’, ‘groups’); # 访问名字属性为’groups’的frame
要操作frame下的任何对象,首先要使用’getFrame’方法取得frame对象,然后使用其它诸如getLink, getRadio等方法来访问对象。
$ie->getFrame(‘name:’, ‘groups’)->getRadio(‘beforetext:’, “Option One”)->Select;

#选择frame下面的单选框
也有嵌套frame的情况:
$ie->getFrame(“name:”, “first_frame”)->getFrame(“name:”, “nested_frame”);
Frame对象支持的方法
所有在普通方法、链接方法、图像方法、按钮方法、单选框和复选框方法、选择列表方法、文本框和文本域方法、FRAME方法之下列出的方法都支持。
弹出菜单方法
 getPopupWindow($title)
这会对弹出窗口返回一个Win32::IEAutomation对象。弹出窗口和其父IE实例有相同的结构,所以弹出窗口对象支持所有链接、按钮、图像、文本框等方法。

弹出窗口的确切标题是该方法的参数

典型用法:

$ie->getPopupWindow(“Popup One”); #访问标题为”Popup One”的弹出窗口
.要操作弹出窗口下面的任何对象,首先要使用’getPopupWindow’方法取得弹出窗口对象,然后使用其它方法(getLink, getRadio等)来访问对象。

my $popup = $ie->getPopupWindow(“Popup One”) # 访问弹出窗口
$popup->getRadio(‘beforetext:’, “Option One”)->Select; # 选择单选框
有时弹出窗口需要花时间载入它的文档,所以你可以在弹出窗口中使用’WaitforDone’方法。

my $popup = $ie->getPopupWindow(“Popup One”) #访问弹出窗口
$popup->WaitforDone; # 等待弹出窗口完全载入它的文档
弹出窗口对象支持的方法
所有在普通方法、链接方法、图像方法、按钮方法、单选框和复选框方法、选择列表方法、文本框和文本域方法、FRAME方法之下列出的方法都支持。

对话框处理方法
Win32::IEAutomation::WinClicker类提供了一些与诸如安全警告、确认、登陆等对话框交互的方法。AutoIt 的COM接口(http://www.autoitscript.com/autoit3/) 用于补充该功能。

你需要创建一个新的Win32::IEAutomation::WinClicker实例再使用这些方法。

 Win32::IEAutomation::WinClicker->new( warnings => 1)
警告

.默认值为0.如果你想对任何没找到的对象都打印警告信息,就设置为1.这是可选的。

 push_security_alert_yes($wait_time)
.这会按下安全警告对话框的’YES’按钮。提供等待时间以等待安全警告对话框出现。等待时间默认为5秒钟(如果没提供等待时间)过了等待时间就会超时,并执行下一行代码。

典型用法:

#导航到某些认证网站并按下安全警告对话框的’YES’按钮
use Win32::IEAutomation;
use Win32::IEAutomation::WinClicker; #这会提供与对话框交互的方法

my $ie = Win32::IEAutomation->new();

$ie->gotoURL(“https://some_secure_site.com", 1);

#第二个参数是说不等待文档完全载入并允许执行下一行代码

my $clicker = Win32::IEAutomation::WinClicker->new();
$clicker->push_security_alert_yes();
$ie->WaitforDone; #此处我们会等待文档全部加载完成

 push_button_yes($title, $wait_time)
这会按下窗口的’Yes’按钮,该窗口含有提供的标题$title。
$title: 提供对话框的确切标题

$wait_time: 提供等待时间以等待确认对话框出现。等待时间默认为5秒钟(如果没提供等待时间)过了等待时间就会超时,并执行下一行代码。

 push_confirm_button_ok($title, $wait_time)
这会按下任何确认对话框的’OK’按钮
$title: 提供对话框的确切标题

$wait_time:提供等待时间以等待确认对话框出现。等待时间默认为5秒钟(如果没提供等待时间)过了等待时间就会超时,并执行下一行代码。

 push_confirm_button_cancle($wait_time)
这会按下任何确认对话框的’ Cancle’按钮。
$title: 提供对话框的确切标题

$wait_time: 提供等待时间以等待确认对话框出现。等待时间默认为5秒钟(如果没提供等待时间)过了等待时间就会超时,并执行下一行代码。

 logon($title, $user, $password, $wait_time)
这会在登陆对话框中填入用户名和密码,然后按下回车键
$title: 提供登陆对话框的确切标题

$user: 提供要输入的用户名

$password: 提供要输入的密码
$wait_time: 提供等待时间以等待登陆对话框出现。等待时间默认为5秒钟(如果没提供等待时间)过了等待时间就会超时,并执行下一行代码。

典型用法:

导航到某些认证网站并按下安全警告对话框的’YES’按钮

use Win32::IEAutomation;
use Win32::IEAutomation::WinClicker; #这会提供与对话框交互的方法

my $ie = Win32::IEAutomation->new();
$ie->gotoURL(‘http://pause.perl.org');
$ie->getLink(‘linktext:’, “Login”)->Click(1);

#第二个参数是说不等待文档完全载入并允许执行下一行代码

my $clicker = Win32::IEAutomation::WinClicker->new();
$clicker->logon(“Enter Network Password”, $user, $password, $wait_time);

此处’Enter Network Password’是登陆窗口的标题

$ie->WaitforDone; #此处我们会等待文档全部加载完成