我正在使用 Selenium WebDriver 进行自动化,并且我正在使用 Chromedriver。
我注意到,当我的驱动程序运行并打开 Chrome 浏览器时,它会打开具有奇怪大小的浏览器。 我尝试修复它但徒劳。
有人知道如何更改吗?
chrome = 57.0.2987.133
chromedriver = 2.27.440174
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--window-size=1920,1080")
driver = Chrome(chrome_options=chrome_options)
将此用于您的自定义尺寸:
driver.manage().window().setSize(new Dimension(1024,768));
您可以根据您的要求更改尺寸。
#use chrome webdriver
driver = webdriver.Chrome('path to /chromedriver')
driver.set_window_size(1400,1000)
@yonatan-kiron 答案的 C# 版本,以及来自示例代码的 Selenium
using
语句。
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.AddArgument("--window-size=1300,1000");
using (IWebDriver driver = new ChromeDriver(chromeOptions))
{
...
}
试试这个
using System.Drawing;
driver.Manage().Window.Size = new Size(width, height);
尝试使用
driver.manage.window.maximize();
最大化窗口。
红宝石
方法#1
options = {
'chromeOptions' => {
'args' => ['start-fullscreen']
}
}
caps = Selenium::WebDriver::Remote::Capabilities.chrome(options)
@driver = Selenium::WebDriver.for :chrome, desired_capabilities: caps
方法#2
options = {
'chromeOptions' => {
'args' => ['window-size=640,480']
}
}
caps = Selenium::WebDriver::Remote::Capabilities.chrome(options)
@driver = Selenium::WebDriver.for :chrome, desired_capabilities: caps
方法#3
max_width, max_height = @driver.execute_script("return [window.screen.availWidth, window.screen.availHeight];")
@driver.manage.window.resize_to(max_width, max_height)
方法#4
@driver.manage.window.maximize
方法#5
target_size = Selenium::WebDriver::Dimension.new(1600, 1268)
@driver.manage.window.size = target_size
方法#6
@driver.manage.window.resize_to(640, 480)
方法#7
@driver.execute_script("window.resizeTo(640, 480);")
如果您使用 php 的 Facebook 语言绑定,请尝试以下操作:
$driver->manage()->window()->setSize(new WebDriverDimension(1024,768));
在 java/groovy 中尝试:
import java.awt.Toolkit;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.Point;
...
java.awt.Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension maximizedScreenSize = new Dimension((int) screenSize.getWidth(), (int) screenSize.getHeight());
driver.manage().window().setPosition(new Point(0, 0));
driver.manage().window().setSize(maximizedScreenSize);
这将以全屏方式打开浏览器
以下 chrome 选项对我适用于无头 chrome:
JAVA:
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--window-size=1920,1080");
chromeOptions.setHeadless(true);
driver = new ChromeDriver(chromeOptions);
driver.get("your-site");
driver.manage().window().maximize();
selenium-java:3.8.1
chromedriver:2.43
Chrome:v69-71
如果您使用的是 Clojure 和 https://github.com/semperos/clj-webdriver,您可以使用此代码片段来调整浏览器大小。
(require '[clj-webdriver.taxi :as taxi])
; Open browser
(taxi/set-driver! {:browser :chrome} "about:blank")
; Resize browser
(-> taxi/*driver* (.webdriver) (.manage) (.window)
(.setSize (org.openqa.selenium.Dimension. 0 0)))
使用
Dimension Class
控制窗口大小。
Dimension d = new Dimension(1200,800); //(x,y coordinators in pixels)
driver.manage().window().setSize(d);
Ruby 版本:
caps = Selenium::WebDriver::Remote::Capabilities.chrome("chromeOptions" => {"args"=> ["--window-size=1280,960"]})
url = "http://localhost:9515" # if you are using local chrome or url = Browserstack/ saucelabs hub url if you are using cloud service providers.
Selenium::WebDriver.for(:remote, :url => url, :desired_capabilities => caps)
调整 chrome 大小在最新的 chromedrivers 中存在错误,它会间歇性地失败并显示此失败消息。
unknown error: cannot get automation extension
from timeout: cannot determine loading status
from timeout: Timed out receiving message from renderer: -65.294
(Session info: chrome=56.0.2924.76)
(Driver info: chromedriver=2.28.455517 (2c6d2707d8ea850c862f04ac066724273981e88f)
通过 javascript 进行的 resizeTo 也不支持通过 selenium webdriver 启动的 chrome。所以最后一个选项是使用命令行开关。
只要您使用的总屏幕分辨率大于您要使用的窗口大小,您就可以使用此(C#):
browserDriver.Manage().Window.Size = windowSize;
如果您的屏幕分辨率较小,那么您就不走运了。我尝试了不同的方法,例如:
chromeOptions.AddArgument($"window-size={windowSize.Width},{windowSize.Height}");
甚至导入移动窗口函数来调整窗口大小:
[DllImport("user32.dll", SetLastError = true)]
static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int Width, int Height, bool Repaint);
// Example
MoveWindow(process.MainWindowHandle, 0, 0, windowSize.Width, windowSize.Height, true);
但是这些都不起作用。 chrome 似乎做了一些不同的事情来防止窗口大小变得大于屏幕分辨率。使用 Firefox,我没有看到这种行为。
根据我的经验,从网络驱动程序设置大小并不总是可靠的。 它可能仅将其应用于视口,或者可能会陷入其他问题(例如特定网络驱动程序的最小屏幕尺寸)。
参见https://w3c.github.io/webdriver/#dfn-set-window-rect
该规范不保证最终的窗口大小与所请求的大小完全匹配。特别是,该实现预计会限制大于物理屏幕尺寸或小于最小窗口尺寸的值。
我将尝试设置功能,看看是否有更好的效果。
我的设备的屏幕分辨率低于测试预期的屏幕分辨率。
对我有用的解决方法:
options.EnableMobileEmulation(new ChromiumMobileEmulationDeviceSettings
{
Height = 1080,
Width = 1920,
EnableTouchEvents = false,
UserAgent = "Responsive"
});
在 Python 中,您可以使用 Selenium 设置 Chrome 的窗口大小,如下所示。 *
-window-size
和 window-size
也有效:
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("--window-size=1024,768")
driver = webdriver.Chrome(options=options)
在Python中,你也可以根据thd doc使用下面的代码来完成:
from selenium import webdriver
driver = webdriver.Chrome()
driver.set_window_size(1024, 768)
*我的回答解释了更多。