Win32::IEAutomation –使用IE瀏覽器進(jìn)行Web應(yīng)用自動(dòng)化
翻譯:sxw
Email:sxw2k@sian.com
Date:2012-3-23
概要
use Win32::IEAutomation;
#創(chuàng)建新的Internet Explorer實(shí)例
my $ie = Win32::IEAutomation->new( visible => 1, maximize => 1);
# 網(wǎng)站導(dǎo)航
$ie->gotoURL('http://www.google.com');
# 查找超鏈接并點(diǎn)擊
# 使用'linktext:'選項(xiàng) (網(wǎng)頁上顯示的鏈接的文字)
$ie->getLink('linktext:', "About Google")->Click;
# 或使用'linktext:' 帶有正則表達(dá)式匹配的選項(xiàng)
$ie->getLink('linktext:', qr/About Google/)->Click;
#或使用 'id:' 選項(xiàng) ( <a id=1a class=q href=......>)
$ie->getLink('id:', "1a")->Click;
#查找復(fù)選框并選擇
#使用 'name:'選項(xiàng) ( <input type = "checkbox" name = "checkme" value = "1"> )
$ie->getCheckbox('name:', "checkme")->Select;
# 或使用'aftertext:' option (網(wǎng)頁上在某些文字后的復(fù)選框for checkbox after some text on the web page)
$ie->getCheckbox('aftertext:', "some text here")->Select;
#查找文本域并輸入數(shù)據(jù)
#使用 'name:'選項(xiàng) ( <input type="text" name="username" .......> )
$ie->getTextBox('name:', "username")->SetValue($user);
# 查找按鈕并點(diǎn)擊
# 使用 'caption:'選項(xiàng)(caption的意思是標(biāo)題)
$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");
# 捕獲彈出菜單作為一個(gè)新的窗口并取得控制
my $popup = $ie->getPopupWindow("title of popup window");
$popup->getButton('value:', "button_value")->Click;
此外,它提供了與安全警告對(duì)話框、確認(rèn)對(duì)話框、登陸對(duì)話框等交互的方法。
#導(dǎo)航到某些安全網(wǎng)站并按下安全警告對(duì)話框的’YES’按鈕
use Win32::IEAutomation;
use Win32::IEAutomation::WinClicker; # 這會(huì)提供與對(duì)話框交互的方法
my $ie = Win32::IEAutomation->new();
$ie->gotoURL("https://some_secure_site.com", 1); #
#第二個(gè)參數(shù)‘1’的意思是不等待文檔全部加載完畢并允許代碼跳到下一行
my $clicker = Win32::IEAutomation::WinClicker->new();
$clicker->push_security_alert_yes();
$ie->WaitforDone; # 此處我們會(huì)等待導(dǎo)航的網(wǎng)站全部加載完畢
描述
這個(gè)模塊試圖在Windows平臺(tái)上使用IE瀏覽器進(jìn)行Web應(yīng)用自動(dòng)化。它在內(nèi)部使用Win32::OLE為IE創(chuàng)建自動(dòng)化對(duì)象。它驅(qū)使IE瀏覽器使用它的DOM屬性和方法。該模塊允許用戶與諸如鏈接、按鈕、單選框、復(fù)選框和文本域等網(wǎng)頁控制進(jìn)行交互。它也支持框架、彈出窗口,并與如安全警告、確認(rèn)對(duì)話框、警告對(duì)話框等Javascript對(duì)話框進(jìn)行交互。
方法:
結(jié)構(gòu)和類方法
Win32::IEAutomation->new( visible => 1, maximize => 1, warnings => 1 )
這是通過Win32::OLE構(gòu)造的新的Internet Explorer 實(shí)例。調(diào)用此函數(shù)將創(chuàng)建一個(gè)Perl對(duì)象,它內(nèi)部包含Internet Explorer的自動(dòng)化對(duì)象。該方法的參數(shù)是散列格式的3個(gè)選項(xiàng)。這3個(gè)選項(xiàng)都是可選的.
- visible
它設(shè)置IE瀏覽器窗口的可見性. 默認(rèn)值為1, 意思是如果你不提供這個(gè)選項(xiàng)就默認(rèn)可見。你可以將它設(shè)置為0讓使IE瀏覽器以隱藏模式運(yùn)行。
- maximize
默認(rèn)值為0,意思是它以上次瀏覽器窗口的大小運(yùn)行。設(shè)置為1會(huì)最大化窗口。
- warnings
默認(rèn)值為 0.如果你想對(duì)任何找不到的對(duì)象打印警告信息,就把它設(shè)置為1,這是可選的。
.
- gotoURL($url, [$nowait])
如果沒有提供第二個(gè)參數(shù)這個(gè)方法就定位到指定的URL,并等待它被完全加載完畢。第二個(gè)參數(shù)是可選的,并且它代表不等待頁面全部加載的布爾值。給第二個(gè)參數(shù)設(shè)置為1(真布爾值),則在該gotoURL方法中代碼不會(huì)等待頁面全部加載 。這對(duì)于和諸如安全警告之類對(duì)話框的交互很有用。這種情況下使用該方法的第二個(gè)參數(shù),然后與對(duì)話框交互(下面會(huì)描述與對(duì)話框交互的方法)最后使用’WaitforDone’方法等待IE完全加載頁面。
Back()
像IE的返回按鈕一樣,等待網(wǎng)頁完全加載完畢。Reload()
像IE的刷新按鈕一樣,并等待網(wǎng)頁完全加載完畢。URL()
這會(huì)返回當(dāng)前文檔的URLTitle()
這會(huì)返回當(dāng)前文檔的標(biāo)題Content()
這會(huì)返回當(dāng)前文檔的HTML。在標(biāo)量上下文會(huì)返回一個(gè)單一的字符串(帶有\(zhòng)n符號(hào)),在列表上下文,會(huì)返回一個(gè)數(shù)組。請(qǐng)注意所有的標(biāo)簽都是大寫的。VerifyText($string, [iflags])
驗(yàn)證給定字符串是否在當(dāng)前文檔的文本中出現(xiàn),成功返回1,失敗返回undefined.第二個(gè)參數(shù)ifags是可選的,它是個(gè)整數(shù)值,指定一個(gè)或多個(gè)如下標(biāo)志以表明搜索類型:
0 默認(rèn)值 匹配部分單詞.
1 向后匹配
2 只匹配整個(gè)單詞.
4 區(qū)分大小寫匹配.
- PageText()
它返回當(dāng)前頁的文本(沒有html標(biāo)簽)。在標(biāo)量上下文返回一個(gè)單一字符串(帶有\(zhòng)n符號(hào))在列表送上下文中返回?cái)?shù)組。
這會(huì)幫助VerifyText方法的使用。用戶可以打印返回的數(shù)組到某個(gè)文件中,并查看可以給VerifyText 方法傳遞什么樣的字符串參數(shù)。
- WaitforDone()
等待直到IE瀏覽器結(jié)束忙碌狀態(tài)并且文檔被全部加載。在我們繼續(xù)之前,這會(huì)每隔一秒鐘對(duì)IE進(jìn)行查詢并檢查它的繁忙狀態(tài)和文檔完整性狀態(tài)。
closeIE()
這會(huì)關(guān)閉IE實(shí)例getAgent()
它會(huì)返回一個(gè)對(duì)IE自動(dòng)化對(duì)象的引用,該引用使用Win32::OLE創(chuàng)建
鏈接方法
getLink($how, $what)
該方法用于訪問網(wǎng)頁上的鏈接。它返回包含html鏈接元素的Win32::IEAutomation::Element 對(duì)象。$how : 這個(gè)選項(xiàng)是你如何訪問鏈接
$what : 這是字符串或整數(shù),是你要找的東西。為此,它也支持使用perl的qr操作符的模式匹配(看下面的例子)
使用$how的有效選項(xiàng):'linktext:' - 通過匹配鏈接文本查找鏈接
'id:' -通過匹配id屬性查找鏈接
'name:' -通過匹配名字屬性查找鏈接
'linkurl:' -通過匹配鏈接的url屬性查找鏈接
'class:' -通過匹配類屬性查找鏈接
典型用法:
$ie->getLink('linktext:', "Sign in"); # 訪問使用’Sign in’作為文本的鏈接
$ie->getLink('linktext:', qr/About Google/); #訪問文本匹配'About Google'的鏈接
$ie->getLink('id:', 5); #訪問其id屬性值為5的鏈接
- getAllLinks()
這會(huì)以Win32::IEAutomation::Element對(duì)象的形式返回出現(xiàn)在當(dāng)前文檔中的所有鏈接。對(duì)于返回值,在標(biāo)量上下文中,給出鏈接出現(xiàn)的數(shù)目,在列表上下文中,返回一個(gè)數(shù)組,元素是所有的鏈接對(duì)象。數(shù)組中的每個(gè)對(duì)象與我們使用getLink方法中的對(duì)象類似。
? 鏈接對(duì)象支持的方法
? Click($nowait);
點(diǎn)擊鏈接并等待直到文檔完全加載。因?yàn)樗褂肈OM的click方法,所以它支持點(diǎn)擊帶有javascript的鏈接。
$nowait: 這是可選的。給該參數(shù)設(shè)置為1(真布爾值),則代碼在點(diǎn)擊鏈接后,不等待頁面完全加載。如果你需要在點(diǎn)擊鏈接后和諸如登陸對(duì)話框等任何對(duì)話框交互時(shí)這很有用(請(qǐng)查看logon()方法獲取詳情)
? linkText();
返回鏈接的文本
? linkUrl();
返回鏈接的url
? getProperty($property)
檢索鏈接對(duì)象給定屬性的值。這使得取得html鏈接支持的任何屬性的值變得容易了。.
圖像方法
? getImage($how, $what)
該方法用于訪問網(wǎng)頁上的圖像。它返回Win32::IEAutomation::Element 對(duì)象,該對(duì)象包含了html圖像元素。
$how : 這個(gè)選項(xiàng)是以何種方式訪問圖像
$what : 這是個(gè)字符串或整數(shù),是你在查找的東西。為此,它也支持使用Perl的’qr’操作符的模式匹配。
使用$how的有效選項(xiàng):
'id:' –通過匹配id屬性查找圖像
'name:' -通過匹配名字屬性查找圖像
'imgurl:' -通過匹配圖像的src屬性屬性查找圖像
'alt:' -通過匹配圖像的alt屬性查找圖像
'class:' -通過匹配類屬性查找圖像
典型用法:
$ie->getImage('imgurl:', qr/logo.gif$/); #訪問src匹配/logo.gif$/的圖像
$ie->getImage('alt:', "Google"); #訪問alt屬性是’Google’ 的圖像
$ie->getImage('class:', $some_class); #訪問類屬性值為$some_class的圖像
? getAllImages()
這會(huì)以Win32::IEAutomation::Element對(duì)象的形式返回出現(xiàn)在當(dāng)前文檔中的所有圖像。對(duì)于返回值,在標(biāo)量上下文中,給出圖像出現(xiàn)的數(shù)目,在列表上下文中,返回一個(gè)數(shù)組,元素是所有的圖像對(duì)象。數(shù)組中的每個(gè)對(duì)象與我們使用getImage方法中的對(duì)象類似。
? 圖像對(duì)象支持的方法
? Click($nowait)
點(diǎn)擊圖像并等待直到文檔完全加載。因?yàn)樗褂肈OM的click方法,所以它支持點(diǎn)擊帶有javascript的鏈接。
$nowait: 這是可選的。給該參數(shù)設(shè)置為1(真布爾值),則代碼在點(diǎn)擊圖像后,不等待頁面完全加載。如果你需要在點(diǎn)擊圖像后和諸如登陸對(duì)話框等任何對(duì)話框交互時(shí)這很有用(請(qǐng)查看logon()方法獲取詳情)
? imgUrl()
返回圖像的url
? getProperty($property)
為圖像對(duì)象檢索給定屬性的值。這使得取得html圖像支持的任何屬性的值變得容易了。
按鈕方法
? getButton($how, $what)
該方法用于訪問網(wǎng)頁上的按鈕。它返回Win32::IEAutomation::Element 對(duì)象,該對(duì)象包含html輸入type=button或提交元素。
$how : 這個(gè)選項(xiàng)是你如何訪問按鈕
$what : 這是字符串或整數(shù),是你要找的東西。為此,它也支持使用perl的qr操作符的模式匹配(看下面的例子)
使用$how的有效選項(xiàng):
'id:' –通過匹配id屬性查找按鈕
'name:' -通過匹配名字屬性查找按鈕
'value:' -通過匹配value屬性查找按鈕
'caption:' – 通過匹配按鈕上顯示的文字查找按鈕
'class:' –通過匹配類屬性查找按鈕
如果你查詢的選項(xiàng)有多于一個(gè)的按鈕并有同樣的值,則它返回集合的第一個(gè)按鈕。
典型用法:
$ie->getButton('caption:', "Google Search"); #訪問帶有'Google Search'文字的按鈕
$ie->getButton('name:', "btnG"); # 訪問名字屬性是’btnG’的按鈕
? 按鈕對(duì)象支持的方法
? Click($nowait)
點(diǎn)擊按鈕并等待直到文檔完全加載。
$nowait: 這是可選的。給該參數(shù)設(shè)置為1(真布爾值),則代碼在點(diǎn)擊按鈕后,不等待頁面完全加載。如果你需要在點(diǎn)擊按鈕后和諸如登陸對(duì)話框等任何對(duì)話框交互時(shí)這很有用(請(qǐng)查看logon()方法獲取詳情)
? getProperty($property)
檢索按鈕對(duì)象給定屬性的值。這使得取得html按鈕支持的任何屬性的值變得容易了。
單選框和復(fù)選框方法
? getRadio($how, $what)
該方法用于訪問網(wǎng)頁上的單選框。它返回Win32::IEAutomation::Element 對(duì)象,該對(duì)象包含html輸入type=radio元素。
? getCheckbox($how, $what)
該方法用于訪問網(wǎng)頁上的復(fù)選框。它返回Win32::IEAutomation::Element 對(duì)象,該對(duì)象包含html輸入type=checkbox元素。
$how : 這個(gè)選項(xiàng)是以何種方式訪問單選框或復(fù)選框
$what : 這是個(gè)字符串或整數(shù),是你在查找的東西。為此,它也支持使用Perl的’qr’操作符的模式匹配。
使用$how的有效選項(xiàng):
'id:' –通過匹配id屬性查找單選框或復(fù)選框
'name:' – 通過匹配名字屬性查找單選框或復(fù)選框
'value:' -通過匹配值屬性查找單選框或復(fù)選框
'class:' -通過匹配類屬性查找單選框或復(fù)選框
'index:' – 在所有單選框或復(fù)選框中使用索引查找單選框或復(fù)選框'beforetext: ' -在指定文本的前面查找單選框或復(fù)選框.
'aftertext:' –在指定文本的后面查找單選框或復(fù)選框
如果你查詢的選項(xiàng)有多于一個(gè)的對(duì)象并有同樣的值,則它返回集合的第一個(gè)對(duì)象。
典型用法:
$ie->getRadio('beforetext:', "Option One"); #訪問出現(xiàn)在文本’Option One’前的單選框
$ie->getRadio('value:', $radio_value); # 訪問值屬性為$radio_value的單選框
$ie->getCheckbox('aftertext:', "Remember Password");
# 訪問出現(xiàn)在文字’ Remember Password'之后的復(fù)選框
$ie->getCheckbox('index:', 3); #訪問當(dāng)前網(wǎng)頁復(fù)選框集合中的第三個(gè)復(fù)選框
? 單選框或復(fù)選框?qū)ο笾С值姆椒?br>
? Select()
該方法選擇指定的單選框或復(fù)選框,假設(shè)還沒有選擇的話
$ie->getRadio('beforetext:', "Option One")->Select;
? deSelect()
該方法取消選擇單選框或復(fù)選框,假設(shè)還沒有取消選擇的話。
$ie->getCheckbox('aftertext:', "Remember Password")->deSelect;
? getProperty($property)
檢索單選框或復(fù)選框?qū)ο蠼o定屬性的值。這使得取得html單選框或復(fù)選框支持的任何屬性的值變得容易了。
選擇列表方法
? getSelectList($how, $what)
該方法用于訪問網(wǎng)頁上的選擇列表。它返回Win32::IEAutomation::Element 對(duì)象,該對(duì)象包含html select元素。
$how : 這個(gè)選項(xiàng)是以何種方式訪問選擇列表
$what : 這是個(gè)字符串或整數(shù),是你在查找的東西。為此,它也支持使用Perl的’qr’操作符的模式匹配。
使用$how的有效選項(xiàng):
'id:' - 通過匹配id屬性查找選擇列表
'name:' -通過匹配名字屬性查找選擇列表
'class:' -通過匹配類屬性查找選擇列表
'index:' -在所有選擇列表集合中使用索引查找選擇列表
'beforetext:' --在指定文本的前面查找選擇列表
'aftertext:' -在指定文本的后面查找選擇列表
如果你查詢的選項(xiàng)有多于一個(gè)的對(duì)象并有同樣的值,則它返回集合的第一個(gè)對(duì)象。
典型用法:
$ie->getSelectList('aftertext:', "some text"); #訪問出現(xiàn)在’some text’ 文本之后的選擇列表
$ie->getSelectList('name:', 'time_zone'); #訪問名字屬性為’time_zone’的選擇列表
$ie->getSelectList('index:', 3); #訪問當(dāng)前網(wǎng)頁選擇列表集合中的第三個(gè)選擇列表
? 選擇列表對(duì)象支持的方法
? SelectItem()
該方法從選擇列表中選擇一個(gè)或多個(gè)項(xiàng)目。你可以給該方法傳遞一個(gè)或多個(gè)項(xiàng)目。提供項(xiàng)目的名字在網(wǎng)頁上對(duì)用戶是可見的(而不是html 代碼)。只有在選擇列表支持多重選擇時(shí),才能使用該方法用于多項(xiàng)目選擇。
$ie->getSelectList('name:', 'time_zone')->SelectItem("India");
在選擇列表中選擇一個(gè)”India” 項(xiàng)目
$ie->getSelectList('name:', 'time_zone')->SelectItem("India", "U. S. A.", "Australia"); #在選擇列表中選擇"India", "U. S. A." 和 "Australia"三個(gè)項(xiàng)目
? deSelectItem()
該方法從選擇列表中取消選擇一個(gè)或多個(gè)項(xiàng)目。你可以傳遞單一項(xiàng)目或多個(gè)項(xiàng)目給該方法。在網(wǎng)頁上提供用戶可見的項(xiàng)目的名字(而不是html代碼)
$ie->getSelectList('name:', 'time_zone')->deSelectItem("India");
在選擇列表中取消選擇一個(gè)"India"項(xiàng)目。
$ie->getSelectList('name:', 'time_zone')->deSelectItem("India", "U. S. A.", "Australia");
在選擇列表中取消選擇"India", "U. S. A." 和 "Australia"三個(gè)項(xiàng)目
? deSelectAll()
該方法從選擇列表中取消選擇所有項(xiàng)目。調(diào)用該方法時(shí)不使用任何參數(shù)。當(dāng)選擇列表使用隨機(jī)選取的項(xiàng)目出現(xiàn)時(shí),你需要取消選擇這個(gè)項(xiàng)目,這是有用的。
$ie->getSelectList('name:', 'time_zone')->deSelectAll();
在選擇列表中取消選擇所有項(xiàng)目
getProperty($property)
檢索選擇列表對(duì)象給定屬性的值。這使得取得html選擇列表支持的任何屬性的值變得容易了。
文本框和文本域方法
? getTextBox($how, $what)
該方法用于訪問網(wǎng)頁上的輸入文本框。它返回Win32::IEAutomation::Element 對(duì)象,該對(duì)象包含html輸入type=text或密碼元素。此外,該方法也用于文件上傳文本框(例如:input type=file)
? getTextArea($how, $what)
該方法用于訪問網(wǎng)頁上的輸入文本域。它返回Win32::IEAutomation::Element 對(duì)象,該對(duì)象包含html textarea元素。
$how : 這個(gè)選項(xiàng)是以何種方式訪問選擇列表
$what : 這是個(gè)字符串或整數(shù),是你在查找的東西。為此,它也支持使用Perl的’qr’操作符的模式匹配。
使用$how的有效選項(xiàng):
'id:' – 通過匹配id屬性查找文本框
'name:' -通過匹配名字屬性查找文本框
'value:' -通過匹配value屬性查找文本框
'class:' -通過匹配類屬性查找文本框
'index:' - 在所有文本域集合中使用索引查找文本框
'beforetext:' -在指定文本的前面查找文本框
'aftertext:' -在指定文本的后面查找文本框
如果你查詢的選項(xiàng)有多于一個(gè)的對(duì)象并有同樣的值,則它返回集合的第一個(gè)對(duì)象。
典型用法:
$ie->getSelectList('aftertext:', "User Name:");
訪問在文本'User Name:'之后出現(xiàn)的文本框
$ie->getSelectList('name:', 'password');
訪問名字屬性為'password'的文本框
$ie->getSelectList('index:', 3); #訪問當(dāng)前網(wǎng)頁文本域集合中的第三個(gè)文本框
? 文本框?qū)ο笾С值姆椒?br>
? SetValue($string)
這會(huì)為文本框或文本域設(shè)置成給定的字符串。
$ie->getTextBox('name:', "q")->SetValue("web automation");
這會(huì)在輸入文本框中寫入文本'web automation'
$ie->getTextBox("name:", "importFile")->SetValue("C:\temp\somefile");
在文件上傳文本框中設(shè)置某些文件
? GetValue()
這會(huì)返回在文本框或文本域中出現(xiàn)的默認(rèn)文本。
$ie->getTextBox('name:', "q")->GetValue() # 返回在文本框中出現(xiàn)的默認(rèn)文本
? ClearValue()
這會(huì)清除文本框.
$ie->getTextBox('name:', "q")->ClearValue() #這會(huì)清除輸入文本框
? getProperty($property)
.檢索文本框?qū)ο笾薪o定屬性的值。這讓獲取任何html 輸入文本框支持的屬性變得容易。
表格方法
? getTable($how, $what)
該方法用于訪問網(wǎng)頁中的表格。它返回一個(gè)Win32::IEAutomation::Table 對(duì)象,該對(duì)象包含html表格。
$how : 這個(gè)選項(xiàng)是以何種方式訪問鏈接
$what : 這是個(gè)字符串或整數(shù),是你在查找的東西。為此,它也支持使用Perl的’qr’操作符的模式匹配。
使用$how的有效選項(xiàng):
'id:' –通過匹配id屬性查找表格
'name:' -通過匹配名字屬性查找表格
'value:' -通過匹配value屬性查找表格
'class:' -通過匹配類屬性查找表格
如果你查詢的選項(xiàng)有多于一個(gè)的對(duì)象并有同樣的值,則它返回集合的第一個(gè)對(duì)象。
典型用法:
$ie->getTable("id:", "1a"); #訪問id屬性為’1a’的表格
$ie->getTable("class:", "data") # 訪問類屬性是’data’的表格
? getAllTables()
這會(huì)返回?cái)?shù)組,包含網(wǎng)頁上的所有表格。數(shù)組的每個(gè)元素是一個(gè)Win32::IEAutomation::Table 對(duì)象。
典型用法:
my @alltables = $ie->getAllTables;
? 表格對(duì)象支持的方法
? rows([index of row])
該方法從表格中返回行對(duì)象(object/objects).它接受一個(gè)可選參數(shù),即你想獲取的行的索引號(hào)。如果不帶任何參數(shù)地使用該方法,則會(huì)返回表格中的行對(duì)象數(shù)組。如果你提供一個(gè)參數(shù),則它返回一個(gè)標(biāo)量行對(duì)象出現(xiàn)在指定的索引中。行計(jì)數(shù)包含標(biāo)題行。
典型用法:
my @all_rows = $table_object->rows; # 獲取表格中的所有行對(duì)象集合
my $third_row = $table_objects->rows(3) # 獲取表格的第三行
? getRowHavingText($string);
該方法返回一個(gè)單一的包含指定文本的行對(duì)象。如果文本字符串出現(xiàn)在表格中的任一行,就返回那個(gè)行對(duì)象。該方法支持使用Perl的’qr’操作符模式匹配。
典型用法:
my $target_row = $table_object->getRowHavingText("Last Name:");
訪問含有文本"Last Name:"的行,它會(huì)嘗試匹配精確的字符串。
my $target_row = $table_object->getRowHavingText(qr/First Name:/);
通過模式匹配文本"First Name:"訪問表格中的行
? tableCells([$row, $column])
該方法返回表格中出現(xiàn)的所有單元格對(duì)象的數(shù)組。數(shù)組中的每個(gè)元素是一個(gè)單元格對(duì)象。此外,它也支持2個(gè)可選的參數(shù),第一個(gè)參數(shù)是行的索引,第二個(gè)參數(shù)是列的索引。當(dāng)使用這兩個(gè)參數(shù)時(shí),它使用行和列索引的組合返回一個(gè)標(biāo)量單元格對(duì)象。
典型用法:
my @allcells = $table_object->tableCells; # 將所有單元格對(duì)象存入數(shù)組中
my $target_cell = $table_object->tableCells(2, 5); # 獲取第二行第五列的單元格
? 行對(duì)象支持的方法
? cells([index of cell])
該方法返回單元格中出現(xiàn)的所有單元格對(duì)象的數(shù)組。此外,它接受一個(gè)可選參數(shù),即單元格索引。如果不帶任何參數(shù)地使用該方法,則會(huì)返回一個(gè)數(shù)組,包含那一行所有的單元格對(duì)象。如果你提供一個(gè)參數(shù),則它返回一個(gè)以指定索引出現(xiàn)的標(biāo)量單元格對(duì)象。
典型用法:
my @all_cells = $row_object->cells; # 將該行的單元格對(duì)象存入數(shù)組
my $third_cell = $table_objects->cells(3) # 獲取該行的第三個(gè)單元格
? 單元格對(duì)象支持的方法
? cellText
這返回單元格中出現(xiàn)的文本。
典型用法:
$text = $cell_object->cellText; # 取得單元格中出現(xiàn)的文本
? 除此之外, 在鏈接方法,圖像方法,按鈕方法,單選框和復(fù)選框方法,選擇列表方法,文本框和文本域方法之下列出的所有方法都支持單元格對(duì)象。
框架方法
? 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 : 這個(gè)選項(xiàng)是以何種方式訪問選擇列表
$what : 這是個(gè)字符串或整數(shù),是你在查找的東西。為此,它也支持使用Perl的’qr’操作符的模式匹配。
使用$how的有效選項(xiàng):
'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下的任何對(duì)象,首先要使用'getFrame'方法取得frame對(duì)象,然后使用其它諸如getLink, getRadio等方法來訪問對(duì)象。
$ie->getFrame('name:', 'groups')->getRadio('beforetext:', "Option One")->Select;
選擇frame下面的單選框
也有嵌套frame的情況:
$ie->getFrame("name:", "first_frame")->getFrame("name:", "nested_frame");
Frame對(duì)象支持的方法
所有在普通方法、鏈接方法、圖像方法、按鈕方法、單選框和復(fù)選框方法、選擇列表方法、文本框和文本域方法、FRAME方法之下列出的方法都支持。
彈出菜單方法
? getPopupWindow($title)
這會(huì)對(duì)彈出窗口返回一個(gè)Win32::IEAutomation對(duì)象。彈出窗口和其父IE實(shí)例有相同的結(jié)構(gòu),所以彈出窗口對(duì)象支持所有鏈接、按鈕、圖像、文本框等方法。
彈出窗口的確切標(biāo)題是該方法的參數(shù)
典型用法:
$ie->getPopupWindow("Popup One"); #訪問標(biāo)題為"Popup One"的彈出窗口
.要操作彈出窗口下面的任何對(duì)象,首先要使用'getPopupWindow'方法取得彈出窗口對(duì)象,然后使用其它方法(getLink, getRadio等)來訪問對(duì)象。
my $popup = $ie->getPopupWindow("Popup One") # 訪問彈出窗口
$popup->getRadio('beforetext:', "Option One")->Select; # 選擇單選框
有時(shí)彈出窗口需要花時(shí)間載入它的文檔,所以你可以在彈出窗口中使用'WaitforDone'方法。
my $popup = $ie->getPopupWindow("Popup One") #訪問彈出窗口
$popup->WaitforDone; # 等待彈出窗口完全載入它的文檔
彈出窗口對(duì)象支持的方法
所有在普通方法、鏈接方法、圖像方法、按鈕方法、單選框和復(fù)選框方法、選擇列表方法、文本框和文本域方法、FRAME方法之下列出的方法都支持。
對(duì)話框處理方法
Win32::IEAutomation::WinClicker類提供了一些與諸如安全警告、確認(rèn)、登陸等對(duì)話框交互的方法。AutoIt 的COM接口(http://www.autoitscript.com/autoit3/) 用于補(bǔ)充該功能。
你需要?jiǎng)?chuàng)建一個(gè)新的Win32::IEAutomation::WinClicker實(shí)例再使用這些方法。
? Win32::IEAutomation::WinClicker->new( warnings => 1)
警告
.默認(rèn)值為0.如果你想對(duì)任何沒找到的對(duì)象都打印警告信息,就設(shè)置為1.這是可選的。
? push_security_alert_yes($wait_time)
.這會(huì)按下安全警告對(duì)話框的’YES’按鈕。提供等待時(shí)間以等待安全警告對(duì)話框出現(xiàn)。等待時(shí)間默認(rèn)為5秒鐘(如果沒提供等待時(shí)間)過了等待時(shí)間就會(huì)超時(shí),并執(zhí)行下一行代碼。
典型用法:
#導(dǎo)航到某些認(rèn)證網(wǎng)站并按下安全警告對(duì)話框的’YES’按鈕
use Win32::IEAutomation;
use Win32::IEAutomation::WinClicker; #這會(huì)提供與對(duì)話框交互的方法
my $ie = Win32::IEAutomation->new();
$ie->gotoURL("https://some_secure_site.com", 1);
第二個(gè)參數(shù)是說不等待文檔完全載入并允許執(zhí)行下一行代碼
my $clicker = Win32::IEAutomation::WinClicker->new();
$clicker->push_security_alert_yes();
$ie->WaitforDone; #此處我們會(huì)等待文檔全部加載完成
? push_button_yes($title, $wait_time)
這會(huì)按下窗口的’Yes’按鈕,該窗口含有提供的標(biāo)題$title。
$title: 提供對(duì)話框的確切標(biāo)題
$wait_time: 提供等待時(shí)間以等待確認(rèn)對(duì)話框出現(xiàn)。等待時(shí)間默認(rèn)為5秒鐘(如果沒提供等待時(shí)間)過了等待時(shí)間就會(huì)超時(shí),并執(zhí)行下一行代碼。
? push_confirm_button_ok($title, $wait_time)
這會(huì)按下任何確認(rèn)對(duì)話框的’OK’按鈕
$title: 提供對(duì)話框的確切標(biāo)題
$wait_time:提供等待時(shí)間以等待確認(rèn)對(duì)話框出現(xiàn)。等待時(shí)間默認(rèn)為5秒鐘(如果沒提供等待時(shí)間)過了等待時(shí)間就會(huì)超時(shí),并執(zhí)行下一行代碼。
? push_confirm_button_cancle($wait_time)
這會(huì)按下任何確認(rèn)對(duì)話框的’ Cancle’按鈕。
$title: 提供對(duì)話框的確切標(biāo)題
$wait_time: 提供等待時(shí)間以等待確認(rèn)對(duì)話框出現(xiàn)。等待時(shí)間默認(rèn)為5秒鐘(如果沒提供等待時(shí)間)過了等待時(shí)間就會(huì)超時(shí),并執(zhí)行下一行代碼。
? logon($title, $user, $password, $wait_time)
這會(huì)在登陸對(duì)話框中填入用戶名和密碼,然后按下回車鍵
$title: 提供登陸對(duì)話框的確切標(biāo)題
$user: 提供要輸入的用戶名
$password: 提供要輸入的密碼
$wait_time: 提供等待時(shí)間以等待登陸對(duì)話框出現(xiàn)。等待時(shí)間默認(rèn)為5秒鐘(如果沒提供等待時(shí)間)過了等待時(shí)間就會(huì)超時(shí),并執(zhí)行下一行代碼。
典型用法:
導(dǎo)航到某些認(rèn)證網(wǎng)站并按下安全警告對(duì)話框的’YES’按鈕
use Win32::IEAutomation;
use Win32::IEAutomation::WinClicker; #這會(huì)提供與對(duì)話框交互的方法
my $ie = Win32::IEAutomation->new();
$ie->gotoURL('http://pause.perl.org');
$ie->getLink('linktext:', "Login")->Click(1);
第二個(gè)參數(shù)是說不等待文檔完全載入并允許執(zhí)行下一行代碼
my $clicker = Win32::IEAutomation::WinClicker->new();
$clicker->logon("Enter Network Password", $user, $password, $wait_time);
此處'Enter Network Password'是登陸窗口的標(biāo)題
$ie->WaitforDone; #此處我們會(huì)等待文檔全部加載完成