2017-08-07 121 views
3

我們使用Selenium和Java來自動化我們的Web應用程序。我們有工作代碼在Windows操作系統上爲三種瀏覽器(IE,Chrome,Firefox - 最新版本)運行自動測試腳本。無法使用Selenium Webdriver在MAC上最大化Safari瀏覽器

我們已經要求在MAC操作系統 - Safari瀏覽器上運行自動測試腳本。

環境細節:

MAC OS版本:MACOS塞拉利昂版本10.12.5

Safari瀏覽器版本: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(); 

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

請幫助克服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信息:檢測到的話:OSS在異常線程「主」 org.openqa.selenium.NoSuchWindowException:無法滿足使用窗口 的請求,因爲無法找到該窗口。 (警告:服務器沒有提供任何堆棧跟蹤信息) 命令持續時間或超時:27毫秒構建信息:版本: '3.4.0',修訂版本:'5234b32',時間:'2017-03-10 09:04 :52 -0800'System info:host:'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,rotate = false,databaseEnabled = true, handlesAlerts = true,版本= 12603.3。8,cleanSession =真, 平臺= MAC,nativeEvents =真,locationContextEnabled =假, webStorageEnabled =真,browserName =動物園,javascriptEnabled =真, platformName = MACOS,cssSelectorsEnabled =真}]會話ID: BA265536-18D3- 490E-B6DB-40D8BBF25937 在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本機方法) 在sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at org.openqa.selenium.remote.ErrorHandler.createThrowable(Constructor.java:423) at 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)

回答

3

將Safari版本升級到11.0(1260)後Safari瀏覽器最大化問題得到解決35年4月1日)

而且工作代碼是

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

嗨,我寫了修復程序。我可以確認Safari 11及更高版本不應該有問題中描述的問題。 –

+0

太好了,謝謝Brian Burg – SeJaPy

0

我們觀察臭蟲以新的驅動程序庫。您可以使用能夠處理新瀏覽器版本的稍舊的罐子。

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

例子: -

添加下面的選項,並把它傳遞給驅動程序: -

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); 

OR

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);"); 

試試這個在Safari: -

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/

希望它會幫助你:)

+0

感謝您的迅速反應。我們有Safari瀏覽器的問題。 – SeJaPy

+0

我在回答中添加了safari的代碼 –

+0

如果我的答案有助於解決您的問題,請點擊我的答案左側的正確標記接受答案,正下方向上和向下的選項。請投票了..它將真正幫助我和其他人誰將在未來提及這個問題..這是如何stackoverflow工作:) ...參考: - https://meta.stackexchange.com/questions/5234/ how-do-accepting-an-answer-work –

相關問題