2011-09-29 219 views
2

我從這個網站下面的HTML一塊: http://catalogue.bl.uk/F/NTBK6NCP3LK56BPNU2NJ4FF4MBLIRUNMFX66JLHKBDV1RNCAAB-02920?func=short-0&set_number=151530勾選複選框機械化

<form name="XXX000001" method="GET"><input type="checkbox" name="ckbox" onclick="javascript:select_record(this.form);" onkeypressed="javascript:select_record(this.form);"></form> 

我想知道是否有反正我可以用機械化來勾選複選框?看起來這些盒子不是用普通的html形成的。我不知道javascript

回答

2

也許您應該檢查WWW::Selenium以處理JavaScript網頁。

WWW::Selenium是一種瀏覽器的遠程控制。 從文檔:Selenium Remote Control(SRC)是一款測試工具,允許您使用任何支持JavaScript的主流瀏覽器針對任何HTTP網站以任何編程語言編寫自動Web應用程序UI測試。 SRC提供了一個Selenium服務器,它可以自動啓動/停止/控制任何支持的瀏覽器。它通過使用Selenium Core工作,它是一個純HTML + JS庫,可在JavaScript中執行自動化任務; Selenium服務器使用AJAX(XmlHttpRequest)直接與瀏覽器通信。

您已經下載並安裝了Selenium服務器(一個Java apllication)後,您可以使用該模塊WWW::Seletion,控制將使用瀏覽器與複雜的JavaScript支持Web站點交互的服務器。

隨着類WWW::Selenium

my $sel = WWW::Selenium->new(
    host => "localhost", 
    port => 4444, 
    browser => "*iexplore", 
    browser_url => "http://www.google.com", 
); 

幾乎每一種與網站成爲可能相互作用的一個實例。必須定義定位符以查明頁面中的元素,以便發出命令(選擇,單擊,...)。

您將在模塊文檔中找到詳細幫助。

2

我假設你正在討論使用機械化將信息提交回頁面,就像人類正在使用瀏覽器勾選複選框一樣。最簡單的方法是首先使用WireShark來觀察當你用Web瀏覽器提交表單時(選中複選框)發生的所有事情,然後用Perl提交表單時模仿相同的行爲。

1

由於WWW :: Mechanize不會說javascript,因此您需要按照建議操作並找出javascript所做的事情並繞過其背後,或者您可以使用類似WWW::Mechanize::Firefox這樣的內容來控制瀏覽器。

0

我有一個建議,雖然不是最優雅的解決方案,但本着「gett'r完成」的精神,您可以嘗試創建一個autoit腳本,爲您做了一些gui交互。這是相當整潔的小工具。我很厭煩在遊戲中練習我的角色,所以我創建了一個自動腳本來爲我的玩家提供水平,並且只花了一天時間來學習語法並創建腳本。我相信自動化一個網頁將花費更多的時間。只是一個想法...