如何为 Chrome 设置浏览器 window 大小,以及由 Selenium WebDriver 在 incognito/private 模式下启动的 Opera?

How to set browser window size for Chrome and Opera launched by Selenium WebDriver in incognito/private mode?

我正在开发将在多种浏览器类型(Chrome、FireFox、Internet Explorer 和 Opera)上执行测试的应用程序。我找到了如何在 incognito/private 模式下启动它们的方法 (How to open incognito/private window with Selenium WD for different browser types?) and set window size (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 将参数传递给驱动程序。但我想在测试执行期间更改大小。如果我不需要 eval JavaScript.

就好了

您好,我们可以使用维度 class.The 设置浏览器的大小 维度 class 提供了调用的方法。使用它我们可以做到。 设置大小的示例是:

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

嗨,在 Google chrome(incog 模式)中,我认为重新调整大小不是 possible.re-在 google chrome 的正常实例中调整大小是可能但不能使用 incog 模式 on.with 做更多研究我仔细观察了 eclipse 中显示的错误(incog 模式打开)

Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: No current window
JavaScript stack:
Error: No current window
    at checkForExtensionError (chrome-extension://aapnijgdinlhnhlmodcfapnahmbfebeb/background.js:14:17)
    at Object.callback (chrome-extension://aapnijgdinlhnhlmodcfapnahmbfebeb/background.js:67:5)
    at safeCallbackApply (extensions::sendRequest:21:15)
    at handleResponse (extensions::sendRequest:72:7)
  (Session info: chrome=49.0.2623.110)

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

1.please 在 chrome 中打开 chrome://extensions/ 并启用开发者选项然后

2.under Chrome Automation Extension 您将看到错误中显示的相同 ID(在上面发布)。

  1. 允许隐身未选中

4.Please打开Loaded from:下的manifest.json的位置,里面有以下内容

{
  "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>"
  ]
}

根据描述你可以清楚地看到

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

因此,如果 点 3 未启用,则无法在 chrome.

中使用 webdriver 自动执行任何操作

我也不知道如何通过自动化启用 point 3 如果可以的话,那么你肯定可以在 incog 模式下调整 window 的大小。希望这有帮助

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

// 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);");

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

问题:

我使用代码暂时解决了它们:

  • Chrome

    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();
    }