【发布时间】:2018-01-14 12:34:34
【问题描述】:
我们使用 Selenium 和 Java 来自动化我们的 Web 应用程序。我们有工作代码可以在 Windows 操作系统上为三种浏览器(IE、Chrome、Firefox - 最新版本)运行自动化测试脚本。
我们需要在 MAC 操作系统 - Safari 浏览器上运行自动化测试脚本。
环境详情:
MAC OS 版本:macOS Sierra 版本 10.12.5
Safari浏览器版本:10.1.1(12603.2.4)
Selenium 独立服务器版本:3.4.0
Java 版本:1.8.0_112
将 MAC 虚拟机与 VNC 查看器连接(系统管理员团队为我们的测试提供了 MAC 虚拟机)。
在 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);
例外:
2017 年 8 月 7 日下午 3:11:53 org.openqa.selenium.remote.ProtocolHandshake createSession INFO:检测到方言:线程“主”中的 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 功能 [{applicationCacheEnabled=true, 可旋转=false, databaseEnabled=true, handleAlerts=true,版本=12603.3.8,cleanSession=true, 平台=MAC,nativeEvents=true,locationContextEnabled=false, webStorageEnabled=true, browserName=safari, javascriptEnabled=true, platformName=macOS, cssSelectorsEnabled=true}] 会话 ID: BA265536-18D3-490E-B6DB-40D8BBF25937 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) 在 org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:216) 在 org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:168) 在 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:638) 在 org.openqa.selenium.remote.RemoteWebDriver$RemoteWebDriverOptions$RemoteWindow.setSize(RemoteWebDriver.java:860) 在 Sample.Safari.main(Safari.java:20)
【问题讨论】:
标签: java macos selenium safari webdriver