C#でWebDriver(Selenium 2)を使用してブラウザーウィンドウを最大化する方法はありますか?
C#でWebDriver(Selenium 2)を使用してブラウザーウィンドウを最大化する方法はありますか?
回答:
この機能をWebDriverに追加するには、未解決の問題があります。これは、http://code.google.com/p/selenium/issues/detail?id = 174で追跡できます。
回避策はJavascriptExector
、次のように使用することです。
public void resizeTest() {
driver.Navigate().GoToUrl("http://www.example.com/");
((IJavaScriptExecutor)driver).ExecuteScript("window.resizeTo(1024, 768);");
}
screen
オブジェクトを使用して実行時に取得できます。考慮JavaScriptをこれらの点を取ることは、おそらく次のようになりますwindow.moveTo(0,0); window.resizeTo(screen.width, screen.height);
driver.Manage().Window.Maximize();
これはIEとFirefoxで動作します。Chromeが機能しない。ChromeDriverプロジェクトでこれについて提出されたバグがあります。
一方、クロームの回避策は、Joey V.とCoder323が提案したものを実装することです。
ChromeOptions options = new ChromeOptions();
options.addArgument("--start-maximized");
driver = new ChromeDriver(options);
AttributeError: 'WebDriver' object has no attribute 'Manage'
IEおよびFirefoxの場合:
driver.manage().window().maximize();
Chromeの場合:
ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
driver = new ChromeDriver( options )
driver.manage().window().maximize();
driver.maximize_window()
@driver.manage.window.maximize
または
max_width, max_height = driver.execute_script("return [window.screen.availWidth, window.screen.availHeight];")
@driver.manage.window.resize_to(max_width, max_height)
または
target_size = Selenium::WebDriver::Dimension.new(1600, 1268)
@driver.manage.window.size = target_size
次のようなものを使用できます(C#):
driver.Manage().Window.Size = new Size(1024, 768);
テストステップ/シナリオ:
1.ブラウザーを開いてTestURLに移動します
2.ブラウザーを最大化します
C#(.NET)でブラウザーを最大化します。
driver.Manage().Window.Maximize();
Javaでブラウザを最大化します。
driver.manage().window().maximize();
Javaを使用する別の方法:
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension screenResolution = new Dimension((int)
toolkit.getScreenSize().getWidth(), (int)
toolkit.getScreenSize().getHeight());
driver.manage().window().setSize(screenResolution);
driver.manage().window().setPosition(new Point(0,0));
、最後の行の前に追加する必要がありました。そうしないと、ウィンドウが正しい位置にありませんでした。
Window.Maximize()
コマンドを使用するだけ
WebDriver driver= new ChromeDriver()
driver.Manage().Window.Maximize();
次のSelenium Javaコードスニペットは私のために働きました:
driver.manage().window().setPosition(new Point(0,0));
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
Dimension dim = new Dimension((int) screenSize.getWidth(), (int) screenSize.getHeight());
driver.manage().window().setSize(dim);
Javaの場合:
driver.manage().window().maximize();
IE、Mozilla、Chromeで動作します
C#の場合:
driver.Manage().Window.Maximize();
Javaの場合:
driver.manage().window().maximize();
新しいドライバライブラリのバグを確認しました。新しいブラウザバージョンを処理できる少し古いjarを使用できます。
主な一般的なオプションは次のとおりです。
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");
これをサファリで試してください:-
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);
using System.Windows.Forms;
using System.Drawing;
public static void MaximizeBrowser(this IE myBrowser)
{
myBrowser.SizeWindow(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
}
Jimのコードを使用しましたが、ブラウザーを最大化するためにWatiNおよびC#で使用するために少し変更しました。
WebDriverでSelenium Emulationを使用できます。
selenium = new WebDriverBackedSelenium(driver,url);
selenium.windowMaximize();
Pythonでウィンドウを最大化するために使用できる関数はwindow_maximize()です。そして、これが私がそれを使用している方法です。
from selenium import selenium
sel = selenium('localhost', 4444, '*firefox', 'http://10.77.21.67/')
sel.start()
sel.open('/')
sel.wait_for_page_to_load(60000)
#sel.window_focus()
sel.window_maximize()
png = sel.capture_screenshot_to_string()
f = open('screenshot.png', 'wb')
f.write(png.decode('base64'))
f.close()
sel.stop()
C#クライアントドライバー:
driver = new FirefoxDriver(firefoxProfile);
driver.Manage().Window.Size = new System.Drawing.Size(System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Width+10, System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height+10);
===> .NETアセンブリ「System.Windows.Forms」への参照も追加します
...唯一の問題は、正しく配置されていないこと
です...これを修正できる場合はコメントしてください
これがC#で私のために働いたものです、firefoxDriverはクラスに対してグローバルです:
用途:
using System.Drawing;
using System.Windows.Forms;
コードで:
this.firefoxDriver = new FirefoxDriver();
this.firefoxDriver.Manage().Window.Position = new Point(0, 0);
this.firefoxDriver.Manage().Window.Size = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
以下のコード行は、IE、Chrome、Mozillaを最大化します
driver.manage().window().maximize();
上記のコード行と、投稿で言及されているその他の回避策はNodeWebKitブラウザーでは機能しなかったため、回避策として、以下のようにネイティブC#コードを使用する必要がありました。
public static void MaximiseNWKBrowser(IWebDriver d)
{
var body = UICommon.GetElement(By.TagName("body"), d);
body.Click();
string alt = "%";
string space = " ";
string down = "{DOWN}";
string enter = "{ENTER}";
SendKeys.SendWait(alt + space);
for(var i = 1; i <= 6; i++)
{
SendKeys.SendWait(down);
}
SendKeys.SendWait(enter);
}
したがって、この回避策は基本的に「ALT + SPACE」を使用してブラウザのアクションメニューを表示し、オプションから「MAXIMIZE」を選択して「ENTER」を押します。
上記の答えの多くを試しましたが、どれもうまくいきません。私のChromeドライバーのバージョンは2.7で、selenium-java vesionを使用するIamは2.9.0です。公式文書は以下の使用を提案しています:
var capabilities = new DesiredCapabilities();
var switches = new List<string>
{
"--start-maximized"
};
capabilities.SetCapability("chrome.switches", switches);
new ChromeDriver(chromedriver_path, capabilities);
上記も動作しません。Chromeドライバーを確認しましたJsonWireProtocol
:http :
//code.google.com/p/selenium/wiki/JsonWireProtocol
Chromeダイバープロトコルは、ウィンドウを最大化する方法を提供します。
/session/:sessionId/window/:windowHandle/maximize,
ただし、このコマンドはselenium-javaでは使用されません。つまり、コマンドを自分でChromeに送信することもできます。これを実行すると、うまくいきます。
私にとって、Selenium Web Driver C#+ Chromeを使用する場合、上記のソリューションはどれも機能しませんでした。
--start-maximized
-無視されます私はそれをInputSimulatorを使ってうまく動かすことができました:
var inputSim = new InputSimulator();
// WinKey + UP = Maximize focused window
inputSim.Keyboard.ModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.UP);
このコードを使用して、Chromeウィンドウを最大化できます。
ChromeOptions options = new ChromeOptions();
options.addArguments("--window-size=1920,1080");
WebDriver driver = new ChromeDriver(options);