我正在处理将在多种浏览器类型(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 |
+-------------------+----------+-------------------+
如何解决这个问题?我知道我可以使用ChromeOptions
和OperaOptions
将参数传递给驱动程序。但我想在测试执行期间改变大小。如果我不需要评估JavaScript,那就太好了。
答案 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(已在上面发布)。
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);