如何为 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 |
+-------------------+----------+-------------------+
如何解决这个问题?我知道我可以使用 ChromeOptions
和 OperaOptions
将参数传递给驱动程序。但我想在测试执行期间更改大小。如果我不需要 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(在上面发布)。
- 但允许隐身未选中
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:
- 歌剧:
我使用代码暂时解决了它们:
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();
}
我正在开发将在多种浏览器类型(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 |
+-------------------+----------+-------------------+
如何解决这个问题?我知道我可以使用 ChromeOptions
和 OperaOptions
将参数传递给驱动程序。但我想在测试执行期间更改大小。如果我不需要 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(在上面发布)。
- 但允许隐身未选中
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:
- 歌剧:
我使用代码暂时解决了它们:
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(); }