![](/img/trans.png)
[英]Dropdown not getting selected using Selenium Webdriver on Safari browser 10 in Mac
[英]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);
下面的文章將詳細介紹這些例子: -
希望它能幫到你:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.