[英]How to set browser viewport size
I'm trying to create a cross-browser Python-Selenium
test script.我正在尝试创建一个跨浏览器的
Python-Selenium
测试脚本。 So I need all results to be same no matter which webdriver
( Chrome
or IE
) I use.因此,无论我使用哪种
webdriver
( Chrome
或IE
),我都需要所有结果都相同。 I can set browser window size as follow:我可以设置浏览器窗口大小如下:
driver.set_window_size(1920, 1080)
But following code will return different values for Chrome
and IE
:但是以下代码将为
Chrome
和IE
返回不同的值:
element = driver.find_element_by_xpath('some_xpath')
element.location
as viewport area (where web-content displayed) sizes are different ( Chrome
- 1910x998, IE
- 1904x965) despite of same window size.尽管窗口大小相同,但视口区域(显示网络内容的地方)大小不同(
Chrome
- 1910x998, IE
- 1904x965)。 To get these values I used为了获得我使用的这些值
driver.execute_script('return document.documentElement.clientHeight')
driver.execute_script('return document.documentElement.clientWidth')
so I tried所以我试过了
driver.execute_script('document.documentElement.clientHeight = "990px";')
driver.execute_script('document.documentElement.clientWeight = "1900px";')
but with no luck但没有运气
So the question is how to set browser viewport size in selenium
?所以问题是如何在
selenium
设置浏览器视口大小?
Here is function to set the viewport size:这是设置视口大小的函数:
def set_viewport_size(driver, width, height):
window_size = driver.execute_script("""
return [window.outerWidth - window.innerWidth + arguments[0],
window.outerHeight - window.innerHeight + arguments[1]];
""", width, height)
driver.set_window_size(*window_size)
Usage :用法:
from selenium import webdriver
driver = webdriver.Chrome()
# set the viewport size to 800 x 600
set_viewport_size(driver, 800, 600)
# display the viewport size
print driver.execute_script("return [window.innerWidth, window.innerHeight];")
Here's the Java version for @Florent B. answer :这是@Florent B 的Java版本。答案:
int width = "500";
int height = "500";
//Remove the window from fullscreen (optional), if it s in fullscreen the outerHeight is not accurate
browser.manage().window().setSize(new Dimension(800,800));
JavascriptExecutor js= (JavascriptExecutor)browser;
String windowSize = js.executeScript("return (window.outerWidth - window.innerWidth + "+width+") + ',' + (window.outerHeight - window.innerHeight + "+height+"); ").toString();
//Get the values
width = Integer.parseInt(windowSize.split(",")[0]);
height = Integer.parseInt(windowSize.split(",")[1]);
//Set the window
browser.manage().window().setSize(new Dimension(width, height));
Here is the C# Version for @Florent B. answer:这是@Florent B. 的C# 版本。答案:
public static void SetViewportSize(RemoteWebDriver driver, int width, int height)
{
var jsGetPadding = @"return [ window.outerWidth - window.innerWidth,window.outerHeight - window.innerHeight ];";
var paddingArray = driver.ExecuteScript(jsGetPadding) as ReadOnlyCollection<object>;
driver.Manage().Window.Size = new Size(width + int.Parse(paddingArray[0].ToString()), height + int.Parse(paddingArray[1].ToString()));
}
Usage:用法:
RemoteWebDriver driver = new EdgeDriver();
SetViewportSize(driver,800, 800);
I'm using this:我正在使用这个:
driver.manage().window().setSize(new org.openqa.selenium.Dimension(1900, 990));
Where 1900 is the width, and 990 is the height.其中 1900 是宽度,990 是高度。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.