簡體   English   中英

無法使用Selenium Webdriver在MAC上最大化Safari瀏覽器

[英]Unable to maximize Safari browser on MAC with 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();

我們沒有得到任何異常,代碼正在執行但沒有執行任何操作。

請幫助克服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);

例外:

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)

將Safari版本升級到11.0后,Safari瀏覽器最大化問題得到解決(12604.1.35)

工作代碼是

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

我們已經觀察到新驅動程序庫的錯誤。 您可以使用稍微陳舊的罐子來處理新的瀏覽器版本。

您還可以使用其他選項來最大化瀏覽器窗口。

示例: -

添加以下選項並將其傳遞給驅動程序: -

    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/

希望它能幫到你:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM