如何设置浏览器视口大小

And*_*son 6 javascript python browser selenium selenium-webdriver

我正在尝试创建一个跨浏览器的Python-Selenium测试脚本.因此无论我使用哪种webdriver(ChromeIE),我都需要所有结果都相同.我可以设置浏览器窗口大小如下:

driver.set_window_size(1920, 1080)
Run Code Online (Sandbox Code Playgroud)

但是,下面的代码将用于返回不同的值ChromeIE:

element = driver.find_element_by_xpath('some_xpath')
element.location
Run Code Online (Sandbox Code Playgroud)

尽管视窗区域(显示网页内容)大小不同(Chrome- 1910x998,IE- 1904x965),但窗口大小相同.为了获得我使用的这些值

driver.execute_script('return document.documentElement.clientHeight')
driver.execute_script('return document.documentElement.clientWidth')
Run Code Online (Sandbox Code Playgroud)

所以我试过了

driver.execute_script('document.documentElement.clientHeight = "990px";')
driver.execute_script('document.documentElement.clientWeight = "1900px";')
Run Code Online (Sandbox Code Playgroud)

但没有运气

那么问题是如何设置浏览器视口大小selenium

Flo*_* B. 8

以下是设置视口大小的功能:

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)
Run Code Online (Sandbox Code Playgroud)

用法:

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];")
Run Code Online (Sandbox Code Playgroud)

  • 要获得没有滚动条尺寸的视口尺寸,请分别使用`document.body.clientWidth`和`document.body.clientHeight`而不是`window.innerWidth`和`window.innerHeight`。 (2认同)