2011-08-10 129 views
1

我正在更新一個Selenium程序,我寫了一段時間,但它的一部分已停止工作。我想瀏覽一個頁面上的一系列鏈接,點擊每個鏈接,確保有一些預期的文本存在。但有時登錄頁面(https://library.med.nyu.edu/sso/ezproxy_form.php)出現在所需的頁面之前,在這種情況下,我需要在檢查頁面之前登錄。 問題是,無論我輸入什麼字符串來檢查我是否登錄頁面,Selenium都認爲它不存在並跳過登錄,顯然導致其他所有內容都失敗。 見下文 - 我不確定這實際上是什麼問題。它似乎是在沒有實際登錄的情況下衝過「如果我們需要登錄」代碼,然後明顯地失敗了測試的主要部分,因爲它不在正確的頁面上。selenium.waitForPageToLoad似乎並沒有在等待

下面是代碼 - 沒有人看到我的錯誤嗎?

 for (int i = 0; i < Resources.size(); i++) { 
     try { 
         selenium.open("/"); 
         selenium.click("link=" + Resources.get(i).link); 
         selenium.waitForPageToLoad("100000"); 
         if (selenium.isTextPresent("Please sign in to access NYUHSL e-resources")) { 
          selenium.type("sso_user", kid); 
          selenium.type("sso_pass", password); 
          selenium.click("name=SignIn"); 
          selenium.waitForPageToLoad("100000"); 
         } 

         if (!selenium.isTextPresent(Resources.get(i).text)) { 
          outfile.println(Resources.get(i).name + " failed"); 
         } 
        } catch (Exception e) { 
         outfile.println(Resources.get(i).name + " could not be found--link removed?"); 
        } 
     } 
+0

你得到了什麼確切的錯誤信息? – Feanor

回答

1

登錄頁面是否有頁面標題?如果是,請嘗試使用selenium.getTitle()方法驗證頁面標題,以檢查您是否前往登錄頁面。如果沒有,請點擊鏈接無需登錄

我想頁面標題驗證可以幫助解決這個問題

+0

謝謝。我花了一些時間來處理這個問題,並添加了getTitle()函數。不幸的是,這並沒有幫助。看起來時間上有些問題,即使我將等待時間增加到400000(!),並在第一個if語句內移動了第二個等待時間。看起來這個程序在沒有等待的情況下,通過點擊而亂飛。在登錄頁面甚至加載之前,它開始尋找Resources.get(i).name,決定它不在那裏,然後直接重新打開「/」。它似乎並不尊重等待! – umbraphile

+0

這很奇怪。它超時了嗎?什麼是確切的錯誤信息?您可以在catch塊中使用e.printstacktrace()來獲取調試問題的詳細例外 – 2011-08-10 22:07:18

+0

我不認爲它超時。假設我正在測試紐約時報的鏈接是否有效,並且它正在尋找的文本是「©2011紐約時報公司」的頁腳。我在Firefox的日誌窗口中看到的內容是,它運行在我的代理登錄頁面上,並且在幾分之一秒內通過並查找「©2011紐約時報公司」,因爲它在登錄狀態而失敗頁面仍然存在,並且它開始循環,返回到我的主頁並嘗試測試下一個鏈接。 – umbraphile

1

嘗試把:

selenium.setSpeed("1000"); 

權selenium.open在此之後將注入1硒命令之間的第二延遲(1000毫秒)。您應該將其添加爲標準做法,特別是如果您沒有運行無頭瀏覽器。

此外,您可能會考慮使用,因爲您知道如果您在登錄頁面上顯示的網址,selenium命令getLocation。這將返回當前頁面的絕對URL。可能比嘗試查找頁面內隨時可能更改的元素更有效。

所以在上面的代碼中使用的getLocation:

if (selenium.getLocation() == "your reference url"){ 
do your login stuff here 
} 

再次,這是隻是爲了說明我在說什麼的樣本。希望它能幫助你。

+0

謝謝!我已經發現了更多關於這個問題的知識(我經常沒有時間去開展這個項目),結果我誤解了它 - 我想我應該發佈一個新問題,因爲它很不相同 - 它在做頁面重定向太快以致於無法「看見」它們。 – umbraphile