有什么方法可以将WebDriver(Selenium 2)与C#结合使用来最大化浏览器窗口?
有什么方法可以将WebDriver(Selenium 2)与C#结合使用来最大化浏览器窗口?
Answers:
将此功能添加到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项目为此提交了一个错误。
同时,Chrome的解决方法是实现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);
对于C#:
driver.Manage().Window.Maximize();
对于Java:
driver.manage().window().maximize();
我们已经观察到新驱动程序库的错误。您可以使用稍旧的jar,这些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");
在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);
您可以在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 +空格”调出浏览器操作菜单,以从选项中选择“ 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 diver协议提供了一种最大化窗口的方法:
/session/:sessionId/window/:windowHandle/maximize,
但是在selenium-java中不使用此命令。这意味着您还可以自己发送命令给chrome。一旦执行此操作,它将起作用。
Chrome驱动程序已支持:
Java:
webDriver = new ChromeDriver();
webDriver.manage().window().maximize();
对我而言,使用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);