如何设置Selenium WebDriver在隐身/私密模式下启动Chrome和Opera的浏览器窗口大小?

时间:2016-03-31 12:55:17

标签: google-chrome selenium selenium-webdriver opera selenium-chromedriver

我正在处理将在多种浏览器类型(Chrome,FireFox,Internet Explorer和Opera)上执行测试的应用程序。我找到了如何以隐身/私密模式(How to open incognito/private window with Selenium WD for different browser types?)启动它们并设置窗口大小(Browser window control #174)的方式:

Window window = driver.manage().window();
window.setPosition(new Point(0, 0));
window.setSize(new Dimension(width, height));

但是这段代码在所有情况下都不起作用:

+-------------------+----------+-------------------+
|      Browser      | Standard | Incognito/Private |
|-------------------|----------|-------------------|
|      Chrome       |  works   |   does not work   |
|-------------------|----------|-------------------|
|      FireFox      |  works   |       works       |
|-------------------|----------|-------------------|
| Internet Explorer |  works   |       works       |
|-------------------|----------|-------------------|
|      Opera        |  works   |   does not work   |
+-------------------+----------+-------------------+

如何解决这个问题?我知道我可以使用ChromeOptionsOperaOptions将参数传递给驱动程序。但我想在测试执行期间改变大小。如果我不需要评估JavaScript,那就太好了。

4 个答案:

答案 0 :(得分:4)

Chrome和Opera浏览器中的自动化测试存在一些问题。

的问题:

我使用代码暂时解决了这些问题:

  • ChromeDriver driver = new ChromeDriver(capabilities);
    driver.get("chrome://extensions-frame");
    WebElement checkbox = driver.findElement(By.xpath("//label[@class='incognito-control']/input[@type='checkbox']"));
    if (!checkbox.isSelected()) {
        checkbox.click();
    }
    
  • 歌剧:

    OperaDriver driver = new OperaDriver(capabilities);
    driver.get("chrome://extensions");
    WebElement checkbox = driver.findElement(By.xpath("//div[contains(@class, 'incognito-control')]/label/input[@type='checkbox']"));
    if (!checkbox.isSelected()) {
        checkbox.click();
    }
    

答案 1 :(得分:2)

嗨,在谷歌浏览器(incog模式)我认为重新调整大小是不可能的。在谷歌浏览器的正常情况下重新调整大小是可能的,但不能使用incog模式on.with做更多的研究我密切观察eclipse中显示的错误(开启模式)

{
  "key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDr+Q7QFcTr4Wmn9sSICKWbxnYLhIM0ERbcapZCDm",
  "name": "Chrome Automation Extension",
  "version": "1",
  "manifest_version": 2,
  "description": "Exposes extension APIs for automating Chrome",
  "background": {
    "scripts": ["background.js"]
  },
  "permissions": [
     "tabs", "management", "<all_urls>"
  ]
}

你可以在 checkForExtensionError 行看到,你会发现为什么它不可能。

1.请打开chrome:// extensions / in chrome并启用开发人员选项

2.在 Chrome自动化扩展程序下,您会看到错误中显示的相同ID(已在上面发布)。

  1. 允许隐身未选中
  2. 4.请在Loaded from:inside下打开 manifest.json 的位置,您将找到以下内容

    "description": "Exposes extension APIs for automating Chrome",
    

    描述下,你可以清楚地看到

    ng-model

    因此,如果 Point 3 未启用,则无法使用chrome中的webdriver自动执行任何操作。

    此外,我不知道如何通过自动化启用第3点,如果可以的话,您肯定可以在incog模式下调整窗口大小。希望这有帮助

答案 2 :(得分:1)

这是在浏览器启动后设置窗口大小的替代方法:

// open a new window to the desired size
((JavascriptExecutor) driver).executeScript(
    "window.open(window.location.href, 'mywindow', 'height=400,width=400');");

// close the current window
driver.close();

// set the context to the new window
driver.switchTo().window("mywindow");

// the new window is now resizeable by JavaScript
((JavascriptExecutor)driver).executeScript("window.resizeTo(800,600);");

答案 3 :(得分:-3)

您好我们可以使用维度类设置浏览器的大小。维度类提供了我们可以使用的方法。 设置大小的示例是:

    Dimension d = new Dimension(420,600);
    //Resize the current window to the given dimension
    driver.manage().window().setSize(d);