无法使用Selenium Webdriver在MAC上最大化Safari浏览器



我们正在使用Selenium和Java来自动化我们的Web应用程序。我们有工作代码可以在Windows操作系统上运行三种浏览器(IE,Chrome,Firefox - 最新版本(的自动测试脚本。

我们要求在MAC操作系统 - Safari浏览器上运行自动测试脚本。

环境详情:

MAC 操作系统版本:macOS Sierra版本10.12.5

野生动物园浏览器版本: 10.1.1(12603.2.4(

硒独立服务器版本:3.4.0

Java 版本: 1.8.0_112

使用VNC查看器连接的MAC VM(系统管理团队为我们的测试提供了MAC VM(。

在MAC上执行测试脚本时,下面的代码没有最大化Safari浏览器,这对于Windows上的其他浏览器(IE,Chrome和Firefox(工作正常。因此,我们无法在应用程序上找到某些控件。

driver.manage().window().maximize();

我们没有收到任何异常,代码正在执行但不执行任何操作。

请帮助克服 MAC 上的 Safari 浏览器最大化问题。

真的,我认为我的问题已通过此解决方案得到解决,尝试使用代码来最大化Safari浏览器,但出现异常。

法典:

SafariOptions options = new SafariOptions();
options.setUseCleanSession(true);
driver = new SafariDriver(options);
JavascriptExecutor jse = (JavascriptExecutor)driver;
String screenWidth = jse.executeScript("return screen.availWidth").toString();
String screenHeight = jse.executeScript("return screen.availHeight").toString();
int intScreenWidth = Integer.parseInt(screenWidth);
int intScreenHeight = Integer.parseInt(screenHeight);
org.openqa.selenium.Dimension d = new org.openqa.selenium.Dimension(intScreenWidth, intScreenHeight);
driver.manage().window().setSize(d);

例外:

Aug 07, 2017 3:11:53 PM org.openqa.selenium.remote.ProtocolHandshake 创建会话信息:检测到方言:线程"主"中的 OSS 异常 org.openqa.selenium.NoSuchWindowException: 使用窗口的请求 无法满足,因为找不到窗口。 (警告:服务器未提供任何堆栈跟踪信息( 命令持续时间或超时:27 毫秒 构建信息: 版本: "3.4.0",修订版:"5234b32",时间:"2017-03-10 09:04:52 -0800"系统 信息: 主机: 'Mac.local', ip: 'fe80:0:0:0:4c6:11dc:3f91:11f8%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.12.6', java.version: '1.8.0_121' 驱动程序信息: org.openqa.selenium.safari.SafariDriver Capabilities [{applicationCacheEnabled=true, rotatable=false, databaseEnabled=true, handlesAlerts=true, version=12603.3.8, cleanSession=true, platform=MAC, nativeEvents=true, locationContextEnabled=false, webStorageEnabled=true, browserName=safari, javascriptEnabled=true, platformName=macOS, cssSelectorsEnabled=true}] 会话 ID: BA265536-18D3-490E-B6DB-40D8BBF25937 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method( at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62( at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45( at java.lang.reflect.Constructor.newInstance(Constructor.java:423( at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:216( at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:168( at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:638( at org.openqa.selenium.remote.RemoteWebDriver$RemoteWebDriverOptions$RemoteWindow.setSize(RemoteWebDriver.java:860( at Sample.Safari.main(Safari.java:20(

将Safari 版本升级到 11.0(12604.1.35( 后,Safari 浏览器最大化问题已得到解决

工作代码是

driver.manage().window().maximize();

我们观察到新驱动程序库的错误。您可以使用稍微旧的jars,它能够处理新的浏览器版本。

您还可以使用其他选项来最大化浏览器窗口。

例:-

添加以下选项并将其传递给驱动程序:-

chromeOptions.addArguments("--start-maximized");

完整的代码将如下所示:-

System.setProperty("webdriver.chrome.driver","D:\Workspace\JmeterWebdriverProject\src\lib\chromedriver.exe");
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--start-maximized");
driver = new ChromeDriver(chromeOptions);

Toolkit toolkit = Toolkit.getDefaultToolkit();
int Width = (int) toolkit.getScreenSize().getWidth();
int Height = (int)toolkit.getScreenSize().getHeight();
//For Dimension class, Import following library "org.openqa.selenium.Dimension"  
driver.manage().window().setSize(new Dimension(Width,Height));
driver.get("https://google.com");

((IJavaScriptExecutor)driver).ExecuteScript("window.resizeTo(1024, 768);");

在野生动物园试试这个:-

JavascriptExecutor jse = (JavascriptExecutor)driver;
String screenWidth = jse.executeScript("return screen.availWidth").toString();
String screenHeight = jse.executeScript("return screen.availHeight").toString();
int intScreenWidth = Integer.parseInt(screenWidth);
int intScreenHeight = Integer.parseInt(screenHeight);
Dimension d = new Dimension(intScreenWidth, intScreenHeight);
driver.manage.window.setSize(d);

下面的文章将详细介绍这些示例:-

http://www.abodeqa.com/2015/01/20/maximize-window-using-selenium-webdriver-and-by-using-abstract-window-toolkit/

希望它能帮助你:)

最新更新