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

SeJ*_*aPy 4 java safari macos selenium webdriver

我们正在使用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 VM与VNC查看器(Sys管理团队为我们的测试提供了MAC VM).

在MAC上执行测试脚本时,下面的代码并没有最大化Safari浏览器,这对于Windows上的其他浏览器(IE,Chrome和Firefox)来说效果很好.由于这个原因,我们无法在应用程序上找到一些控件.

driver.manage().window().maximize();
Run Code Online (Sandbox Code Playgroud)

我们没有得到任何异常,代码正在执行但没有执行任何操作.

请帮助克服Safari浏览器最大化MAC问题.

真的,我认为我的问题已经解决了这个解决方案,尝试了代码来最大化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);
Run Code Online (Sandbox Code Playgroud)

例外:

2017年8月7日下午3:11:53 org.openqa.selenium.remote.ProtocolHandshake createSession INFO:检测到的方言:线程"main"中的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,rotating = 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.new 位于org.openqa.selenium的org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:216)的java.lang.reflect.Constructor.newInstance(Constructor.java:423)中的实例(DelegatingConstructorAccessorImpl.java:45) org.openqa.selenium.remote上的.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:168).在org.openqa.selenium.remote.RemoteWebDriver上的RemoteWebDriver.exe(RemoteWebDriver.java:638)$ RemoteWebDriverOptions $ RemoteWindow.setSize(RemoteWebDriver) .java:860)在Sample.Safari.main(Safari.java:20)

SeJ*_*aPy 5

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

工作代码是

driver.manage().window().maximize();
Run Code Online (Sandbox Code Playgroud)

  • 嗨,我写了修复程序。我可以确认 Safari 11 及更高版本不应该有问题中描述的问题。 (2认同)