2013-03-16 61 views
0

我是新來的硒。其實我正在處理一些cookie驗證項目,這需要我手動檢查在多個瀏覽器(Firefox,即chrome,safari)中點擊某些許可鏈接之前和之後存在的cookie。使用硒進行餅乾驗證

之前在第一階段的項目中,我運行了一個qtp腳本,將firefox作爲一個窗口對象並截取屏幕截圖,但如果分辨率發生變化或出現任何次要的感覺變化,那就非常麻煩。此外它很難管理,它只能在Firefox上運行,我需要再次爲Chrome和Safari瀏覽器編寫相同的腳本。除此之外,由於QTP是許可產品,目前我們正在使用座位許可證,因此我無法在多臺機器上運行它以加速執行。

所以我想轉向硒。截至目前,我的要求是:

1. open the page - take the screenshot once page loaded. 
2. check the cookies using firebug or any other way - take the screenshot 
3. click the link to close the consent - take screenshot once consent closed. 
4. refresh the page and again check the cookies using firebug - take screenshot 

所以我做了硒一些研究,發現我可以使用verifyCookie驗證Cookie,但仍然需要我餅乾螢火蟲窗口的屏幕截圖。所以我被困在這裏。

請幫我在這裏..

我發現了一些可能的方式做到這一點在Firefox,但現在我期待着如果可能類似於Chrome瀏覽器的東西。謝謝

+0

其實這種很奇怪,但我想如果可以爲鉻準備類似的代碼類型,因爲沒有我在Firefox中使用的那種可用於Chrome的螢火蟲..謝謝 – codeomnitrix 2013-04-13 14:06:41

回答

0

得到了一些解決方案

public class Selenium1st { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) throws IOException, AWTException{ 
     // TODO Auto-generated method stub  
     System.setProperty("webdriver.firefox.bin","C:\\Program Files (x86)\\Mozilla Firefox\\Firefox.exe"); 
     FirefoxProfile firefoxProfile = new FirefoxProfile(); 

     String domain = "extensions.firebug."; 
     firefoxProfile.setPreference("app.update.enabled", false); 
     firefoxProfile.addExtension(new File("E:\\softs\\selenium-2.29.0\\firebug\\firebug-1.11.2-fx.xpi")); 
     firefoxProfile.setPreference(domain + "currentVersion", "1.11.2"); 
     firefoxProfile.setPreference("extensions.firebug.cookies.enableSites", true); 
     firefoxProfile.setPreference("extensions.firebug.allPagesActivation", "on"); 

     firefoxProfile.setPreference(domain + "framePosition", "bottom"); 
     firefoxProfile.setPreference(domain + "defaultPanelName", "cookies"); 

     WebDriver driver = new FirefoxDriver(firefoxProfile); 
     driver.get("http://www.google.com/webhp?complete=1&hl=en"); 
     WebElement query = driver.findElement(By.name("q")); 
     query.sendKeys("Cheese"); 
     query.sendKeys("\n"); 
     Robot robot = new Robot(); 
     BufferedImage img = robot.createScreenCapture(new Rectangle(new Dimension(1024, 768))); 

     File path = new File("E:\\abc");//Path to your file 
     if(path.getName().indexOf(".jpg") == -1){ 
      path = new File(path.getPath() + ".jpg"); 
     }  
     ImageIO.write(img, "jpg", path);     
    } 

} 

可能是有用的。

0

Selenium無法以您想要的方式與Firefox擴展或瀏覽器進行交互。

你可以做的是做收集網頁上的cookie的列表:

driver.manage().getCookies() 

這將給您對硒可見的所有Cookie的列表。請注意,這是相同的是在JavaScript控制檯(並非所有的cookies通過JavaScript是可見的,例如餅乾HTTPOnly屬性設置)利用可見光餅乾:

document.cookie 

我會建議你使用的getCookies ()以編程方式驗證Cookie。

+0

其實Ardesco,cookie驗證不是問題,實際上問題是捕獲所有加載的cookie的屏幕截圖。其實我需要將這些截圖上傳到質量中心。 – codeomnitrix 2013-03-19 04:07:53

+0

Selenium無法打開螢火蟲並截取cookie面板。我想我一直在努力去理解爲什麼它有*是一個截圖。爲什麼不讓自動測試打印出已知的cookies列表並上傳到質量中心足夠好? – Ardesco 2013-03-19 06:35:49

+0

好吧..其實截圖是必要的,以便它在qc中上傳。無論如何,謝謝。 – codeomnitrix 2013-03-19 06:54:55

0

在硒IDE如果你想利用頁面的截圖使用captureEntirePageScreenshot命令

captureEntirePageScreenshot | D:\\test.png | 

    D:\\test.png - path of file where you want to save the file