Чи є спосіб збільшити вікно браузера за допомогою WebDriver (Selenium 2) за допомогою C #?
Чи є спосіб збільшити вікно браузера за допомогою WebDriver (Selenium 2) за допомогою C #?
Відповіді:
Існує неабияка проблема, щоб додати цю функціональність до WebDriver, яку можна відстежувати тут: http://code.google.com/p/selenium/isissue/detail?id=174
Приблизним рішенням буде використання JavascriptExector
наступного:
public void resizeTest() {
driver.Navigate().GoToUrl("http://www.example.com/");
((IJavaScriptExecutor)driver).ExecuteScript("window.resizeTo(1024, 768);");
}
screen
об'єкта javascript . Враховуючи ці моменти, можливо, JavaScript повинен бути таким:window.moveTo(0,0); window.resizeTo(screen.width, screen.height);
driver.Manage().Window.Maximize();
Це працює для IE та Firefox. Chrome не працює. У цьому проекті ChromeDriver подано помилку.
Тим часом вирішення проблеми хрому - це реалізація того, що запропонували Джої В. та Кодер323.
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();
Ми помітили помилку з новими бібліотеками драйверів. Ви можете використовувати трохи старі банки, які вміють працювати з новими версіями браузерів.
Основний загальний варіант:
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);
}
Я використовував код Джима, але трохи змінений для використання з WatiN і C # для максимального використання браузера.
Ви можете використовувати Selenium Emulation у WebDriver:
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"
За допомогою наведеного нижче коду я маю змогу максимізувати вікно,
((JavascriptExecutor) driver).executeScript("if(window.screen){
window.moveTo(0, 0);
window.resizeTo(window.screen.availWidth, window.screen.availHeight);
};");
Я спробував багато відповідей вище, але жодна не працює добре. Моя версія хромованого драйвера - 2,7, а Iam, що використовує selen-java vesion, - 2,9,0. Офіційний документ пропонує використовувати:
var capabilities = new DesiredCapabilities();
var switches = new List<string>
{
"--start-maximized"
};
capabilities.SetCapability("chrome.switches", switches);
new ChromeDriver(chromedriver_path, capabilities);
Сказане також не працює. Я перевірив драйвер хрому JsonWireProtocol
:
http://code.google.com/p/selenium/wiki/JsonWireProtocol
Протокол хромованого дайвера пропонує метод максимального збільшення вікна:
/session/:sessionId/window/:windowHandle/maximize,
але ця команда не використовується в селені-Java. Це означає, що ви також відправляєте команду для хромування самостійно. Як тільки я це зробив, це працює.
Драйвер Chrome вже підтримує:
Java:
webDriver = new ChromeDriver();
webDriver.manage().window().maximize();
Для мене жодне з вищезгаданих рішень не працювало під час роботи з веб-драйвером Selenium C # + Chrome:
--start-maximized
- це ігноруєтьсяМені вдалося змусити його працювати за допомогою InputSimulator :
var inputSim = new InputSimulator();
// WinKey + UP = Maximize focused window
inputSim.Keyboard.ModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.UP);
Ви можете спробувати за допомогою цього коду для максимізації хромованого вікна.
ChromeOptions options = new ChromeOptions();
options.addArguments("--window-size=1920,1080");
WebDriver driver = new ChromeDriver(options);