如何设置浏览器视口大小
How to set browser viewport size
我正在尝试创建一个跨浏览器的Python-Selenium
测试脚本。所以我需要所有的结果都是相同的,无论我使用哪个webdriver
(Chrome
或IE
)。我可以设置浏览器窗口大小如下:
driver.set_window_size(1920, 1080)
但以下代码将为Chrome
和IE
返回不同的值:
element = driver.find_element_by_xpath('some_xpath')
element.location
因为尽管窗口大小相同,但视口区域(显示web内容的地方)的大小不同(Chrome
-1910x998、IE
-1904x965)。为了得到这些值,我使用
driver.execute_script('return document.documentElement.clientHeight')
driver.execute_script('return document.documentElement.clientWidth')
所以我尝试了
driver.execute_script('document.documentElement.clientHeight = "990px";')
driver.execute_script('document.documentElement.clientWeight = "1900px";')
但运气不好
所以问题是如何在selenium
中设置浏览器视口大小?
以下是设置视口大小的函数:
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)
用法:
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];")
这是@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));
这是@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()));
}
用法:
RemoteWebDriver driver = new EdgeDriver();
SetViewportSize(driver,800, 800);
我使用的是:
driver.manage().window().setSize(new org.openqa.selenium.Dimension(1900, 990));
其中1900是宽度,990是高度。
相关文章:
- 如何设置浏览器视口大小
- 将html元素渲染到浏览器视口
- 如何动态检测浏览器视口大小的变化
- 如何为您的网站/视口设置最小宽度,并在宽度低于该宽度时进行浏览器缩放
- 跨浏览器:如何根据视口高度调整元素的垂直位置
- 通过视口或 javascript 设置浏览器缩放
- Firefox移动浏览器中的视觉视口检测
- 切换“.show”和“.hide”,条件始终为“.show”,如果浏览器视口处于特定宽度或更大.(响应式/移动菜单)
- 使用javascript检测浏览器视口
- 我是应该将移动浏览器虚拟视口视为系统性错误,还是有有效的解决方案
- 仅在Firefox Mobile浏览器上获取错误的视口尺寸
- 基于浏览器视口的内容高度
- 如何获取浏览器视口宽度&高度在Javascript和应用于CSS ID's
- Javascript将浏览器视口大小输出到body CSS中
- Android浏览器:获取视口大小
- 设置浏览器的视口大小
- 使用jquery从iframe获取浏览器视口的高度
- Javascript/iPhone-如何调整浏览器视口的大小
- 创建计数到浏览器视口尺寸的动画
- 使用 jQuery 使元素填充浏览器视口的整个高度