จะขยายหน้าต่างเบราว์เซอร์ใน Selenium WebDriver (Selenium 2) โดยใช้ C # ได้อย่างไร


132

มีวิธีใดในการขยายหน้าต่างเบราว์เซอร์โดยใช้ WebDriver (Selenium 2) ด้วย C # หรือไม่?


1
WebDriver ( code.google.com/p/selenium/?redir=1 ) โดยทั่วไปช่วยให้คุณสามารถทดสอบหน้าเว็บได้โดยใช้รหัส
กรดไหลย้อน

1
Selenium WebDriver เป็นผู้สืบทอด Selenium RC
Ripon Al Wasim

คำตอบ:


38

มีปัญหาที่โดดเด่นในการเพิ่มฟังก์ชันนี้ใน 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);");
}

13
สองสิ่ง: 1) หากคุณสนใจสิ่งที่มองเห็นได้คุณอาจต้องการย้ายหน้าต่างไปยังจุดเริ่มต้นก่อนที่จะทำให้เต็มหน้าจอ 2) หากขนาดของหน้าจอเป็นตัวแปรคุณสามารถรับได้ในขณะทำงานด้วยscreenวัตถุจาวาสคริปต์ การพิจารณาประเด็นเหล่านี้จาวาสคริปต์ควรจะเป็น:window.moveTo(0,0); window.resizeTo(screen.width, screen.height);
Guildencrantz

4
โปรดทราบว่ามีปัญหาในการย้ายหน้าต่างไปที่ (0,0) ใน Firefox บน Mac ดูเหมือนว่าจะไม่ได้ระบุพื้นที่ส่วนหัวอย่างถูกต้อง การย้ายหน้าต่างไปที่ (0,1) ดูเหมือนว่าจะย้ายไปที่ (0,0) จริง ๆ ดังนั้นข้อบกพร่องหนึ่งจึงช่วยอีกข้อหนึ่ง เมื่อถึงจุดนั้นคุณสามารถขยายหน้าต่างได้อย่างเหมาะสม
nirvdrum

ควรเป็นอินสแตนซ์ JavascriptExecutor IJavaScriptExecutor
TuGordoBello

160

driver.Manage().Window.Maximize();

ใช้ได้กับ IE และ Firefox Chrome ไม่ทำงาน มีการส่งข้อบกพร่องสำหรับสิ่งนี้ในโครงการ ChromeDriver

ในขณะเดียวกันการหลีกเลี่ยง Chrome คือการใช้สิ่งที่ Joey V. และ Coder323 แนะนำ

ChromeOptions options = new ChromeOptions();
options.addArgument("--start-maximized");
driver = new ChromeDriver(options);

1
วิธีนี้สำหรับ firefox เป็นวิธีเดียวที่ใช้งานได้จาวาสคริปต์ไม่ได้ทำอะไรกับซีลีเนียม 2.21
Sam Adamsh

6
สำหรับกรณีที่สำคัญ Java => driver.manage (). window (). maximize ();
Janaaaa

AttributeError: 'WebDriver' object has no attribute 'Manage'
ผู้ใช้

ดี. ฉันจะบอกว่าขอบคุณ :) มันใช้งานได้กับ chromedriver ของฉัน
Xin

ฉันใช้ FF53 กับ Selenium WebDriver 3.3.0 . driver.Manage () Window.Maximize (); ทำงานให้ฉัน
Ripon Al Wasim

37

สำหรับ IE และ Firefox:

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

สำหรับ Chrome:

ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
driver = new ChromeDriver( options )

4
C # มันเป็นแบบนี้ . driver.Manage () Window.Maximize ();
Chris Hawkes

. driver.manage () หน้าต่าง () เพิ่ม (). ใช้ได้กับโครเมี่ยมเช่นกัน
mosaad

ขอบคุณคริส C # ต้องการวิธีการตัวพิมพ์ใหญ่: สิ่งนี้ . driver.Manage () Window.Maximize ();
LA Guy 88

35

ชวา

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

15

คุณสามารถใช้สิ่งนี้ (C #):

driver.Manage().Window.Size = new Size(1024, 768);

2
น่าเสียดายที่สิ่งนี้เกิดขึ้นและข้อยกเว้นสำหรับ ChromeDriver ทำงานได้ดีสำหรับ IE และ Firefox แม้ว่า
Bryan Allred

การใช้รหัสนี้กับ Selenium C # ควรใช้งานได้ดีเนื่องจากตอนนี้ ChromeDriver ให้บริการโดย Google (แม้ว่าจะเป็นซีลีเนียม 3) หรือคุณสามารถใช้ฟังก์ชันขยายใหญ่สุดหรือเพิ่มอาร์กิวเมนต์ต่อไปนี้โดยใช้ตัวเลือก: "--start-maximized"
user1841243

15

ขั้นตอน / สถานการณ์ทดสอบ:
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);

สิ่งนี้ล้มเหลวในกรณีของ chrome docker container ที่มีข้อผิดพลาด java.awt.HeadlessException ที่ sun.awt.HeadlessToolkit.getScreenSize (HeadlessToolkit.java:284) คุณเคยพบปัญหานี้มาก่อนหรือไม่?
vikramvi

ฉันลองใช้ driver.Manage (). Window.Maximize (); ใน Selenium WebDriver C # บน FF และทำงานได้ดี ฉันยังไม่ได้ลองกับ Chrome
Ripon Al Wasim

สิ่งนี้ใช้ได้ผลสำหรับฉัน แต่ฉันต้องเพิ่มdriver.manage().window().setPosition(new Point(0,0));ก่อนบรรทัดสุดท้ายมิฉะนั้นหน้าต่างจะไม่อยู่ในตำแหน่งที่ถูกต้อง
swanhella

หงส์เฮลล่า: ขอบคุณที่แบ่งปัน
Ripon Al Wasim

8

หากคุณใช้ไดรเวอร์ Chrome คุณสามารถตั้งค่าความสามารถ

    var capabilities = new DesiredCapabilities();

    var switches = new List<string>
                       {
                           "--start-maximized"
                       };

    capabilities.SetCapability("chrome.switches", switches);

    new ChromeDriver(chromedriver_path, capabilities);


6

ข้อมูลโค้ด 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);


5

ฉันมีปัญหาเดียวกัน แต่ปัญหาสามารถแก้ไขได้โดยใช้รหัสต่อไปนี้

driver.manage().window().fullscreen();


4

เราได้สังเกตข้อผิดพลาดกับไลบรารีไดรเวอร์ใหม่ คุณสามารถใช้ขวดโหลเก่าเล็กน้อยซึ่งสามารถรองรับเบราว์เซอร์เวอร์ชันใหม่ได้

ตัวเลือกทั่วไปหลักคือ: -

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

3
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 # เพื่อขยายเบราว์เซอร์ให้ใหญ่ที่สุด


2

คุณสามารถใช้Selenium Emulationใน WebDriver:

selenium = new WebDriverBackedSelenium(driver,url);
selenium.windowMaximize();

1
พวกเขาไม่มี Selenium Emulation ใน webdriver เวอร์ชัน C # อย่างน้อยก็ยังไม่ได้อยู่ใน 2.0a4 (เพิ่งเห็นพวกเขาเปิดตัวเวอร์ชันใหม่ยังไม่ได้ตรวจสอบเลย) อย่างไรก็ตามโค้ดจาวาสคริปต์ข้างต้นใช้งานได้ดี
กรดไหลย้อน

และยังไม่รองรับ iPhoneDriver เช่น
Iulius Curt

ขออภัย WebDriverBackedSelenium.windowMaximize () ไม่ทำงานใน Firefox 7 หรือ Chrome 14 (แม้ว่าจะทำงานใน IE8) เบื้องหลังจะออกคำสั่ง window.resize () Javascript แต่ทั้งสองเบราว์เซอร์เหล่านี้เพิกเฉย โซลูชันของ @ joey-v ใช้ได้กับ Chrome และลุค Inman-Semerau โพสต์วิธีการแก้ปัญหาที่นี่ ;
Andrew Newdigate

2

ฉันใช้วิธีนี้

            OpenQA.Selenium.Chrome.ChromeOptions chromeoptions = new OpenQA.Selenium.Chrome.ChromeOptions();
            chromeoptions.AddArgument("--start-maximized");
            OpenQA.Selenium.Chrome.ChromeDriver chrome = new OpenQA.Selenium.Chrome.ChromeDriver(chromeoptions);

1

มีฟังก์ชันที่คุณสามารถใช้เพื่อขยายหน้าต่างใน 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()

1

ไดรเวอร์ไคลเอ็นต์ 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"

... ปัญหาเดียวคือตำแหน่งไม่ถูกต้อง
... โปรดแสดงความคิดเห็นว่าคุณสามารถแก้ไขได้หรือไม่


1

นี่คือสิ่งที่ใช้ได้ผลสำหรับฉันใน 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);

1

สำหรับ Webdriverjs (node.js) ต่อไปนี้จะขยายหน้าต่าง Chrome ให้ใหญ่สุด

var webdriver = require('selenium-webdriver');
var driver = new webdriver.Builder().
withCapabilities(webdriver.Capabilities.chrome()).build();
driver.manage().window().maximize();
driver.get('hxxp://localhost:8888');

1

ตัวเลือกนี้ใช้ได้สำหรับฉัน:

ChromeOptions options = new ChromeOptions();
options.addArguments("start-fullscreen");

ตัวเลือกนี้ใช้ได้กับทุกระบบปฏิบัติการ


1

บรรทัดด้านล่างของโค้ดจะเพิ่ม 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"


0

ด้วยรหัสด้านล่างฉันสามารถขยายหน้าต่างให้ใหญ่ที่สุด

((JavascriptExecutor) driver).executeScript("if(window.screen){
    window.moveTo(0, 0);
    window.resizeTo(window.screen.availWidth, window.screen.availHeight);
    };");


0

ฉันลองหลายคำตอบข้างต้น แต่ไม่มีคำตอบใดได้ผล เวอร์ชันไดรเวอร์ Chrome ของฉันคือ 2.7 และ Iam ที่ใช้ selenium-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);

ข้างต้นยังใช้ไม่ได้ ฉันตรวจสอบไดรเวอร์ของ Chrome JsonWireProtocol: http://code.google.com/p/selenium/wiki/JsonWireProtocol

โปรโตคอล chrome diver มีวิธีการขยายหน้าต่าง:

/session/:sessionId/window/:windowHandle/maximize,

แต่คำสั่งนี้ไม่ได้ใช้ในซีลีเนียม - จาวา ซึ่งหมายความว่าคุณส่งคำสั่งไปยัง chrome ด้วยตัวเอง เมื่อฉันทำมันได้ผล



0

สำหรับฉันวิธีแก้ปัญหาข้างต้นไม่ได้ผลเมื่อทำงานกับ Selenium Web Driver C # + Chrome:

  • window.resizeTo (1024, 768); - ฉันต้องการใช้ทั้งหน้าจอ
  • --start-maximized - ไม่สนใจ
  • . driver.manage () หน้าต่าง () เพิ่ม (). - ใช้งานไม่ได้เนื่องจากต้องใช้ส่วนขยายบางอย่างและฉันไม่ได้รับอนุญาตให้ใช้ส่วนขยายของ Chrome

ฉันจัดการเพื่อให้มันทำงานโดยใช้InputSimulator :

var inputSim = new InputSimulator();
// WinKey + UP = Maximize focused window
inputSim.Keyboard.ModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.UP);

0

คุณสามารถลองใช้รหัสนี้เพื่อขยายหน้าต่าง Chrome ให้ใหญ่ที่สุด

ChromeOptions options = new ChromeOptions();
options.addArguments("--window-size=1920,1080");

WebDriver driver = new ChromeDriver(options);

แม้ว่าจะเป็นที่ยอมรับในการให้คำตอบแบบใช้รหัสเท่านั้น แต่ก็มักจะมีประโยชน์มากกว่าสำหรับชุมชนหากคุณสามารถให้คำอธิบายเกี่ยวกับโค้ดและช่วยให้ผู้คนเข้าใจว่าเหตุใดจึงจัดการกับปัญหาได้ ซึ่งมักจะช่วยลดจำนวนคำถามติดตามผลและสามารถช่วยให้นักพัฒนารุ่นใหม่เข้าใจแนวคิดพื้นฐานได้อย่างแท้จริง นั่นสำคัญอย่างยิ่งที่นี่ซึ่งมีคำตอบอื่น ๆ อีก 27 คำตอบ ควรเรียกสิ่งที่ทำให้แนวทางของคุณแตกต่างจากคำตอบที่มีอยู่ คุณช่วยอัปเดตคำถามพร้อมรายละเอียดเพิ่มเติมได้ไหม
Jeremy Caney
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.