使用硒进行cookie验证

时间:2013-03-16 11:57:12

标签: selenium-webdriver selenium-ide

我是硒的新手。实际上我正在进行一些cookie验证项目,这需要我在多个浏览器中点击一些同意链接之前和之后手动检查存在的cookie(Firefox,即chrome,safari)。

之前在第1阶段项目中,我运行了一个qtp脚本来将firefox视为一个窗口对象并捕获屏幕截图,但如果分辨率发生变化或者任何轻微的外观变化,那就非常麻烦了。此外,它很难管理,它只适用于Firefox,我需要再次为chrome和safari编写相同的脚本。除此之外,QTP是许可产品,目前我们正在使用座位许可证,因此我无法在多台机器上运行它以加快执行速度。

所以我想到了Selenium。截至目前,我的要求是:

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,但我仍然需要用于cookie的firebug窗口截图。所以我被困在这里。

请帮帮我..

我在Firefox上找到了一些可能的方法,但现在我期待着类似Chrome的东西,如果可能的话。感谢

3 个答案:

答案 0 :(得分:0)

Selenium无法以您希望的方式与firefox扩展或浏览器进行交互。

您可以做的是通过以下方式收集页面上的Cookie列表:

driver.manage().getCookies()

这将为您提供Selenium可见的所有Cookie的列表。请注意,这与JavaScript控制台中可见的Cookie相同(并非所有Cookie都可通过JavaScript查看,例如使用HTTPOnly属性设置的Cookie):

document.cookie

我建议你使用getCookies()以编程方式验证cookie。

答案 1 :(得分:0)

在selenium IDE中,如果要截取页面截屏,请使用captureEntirePageScreenshot命令

   captureEntirePageScreenshot | D:\\test.png | 

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

答案 2 :(得分: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);                
    }

}

可能有用。