如何设置浏览器视口大小

时间:2016-05-12 08:31:41

标签: javascript python selenium browser selenium-webdriver

我正在尝试创建跨浏览器Python-Selenium测试脚本。因此,无论我使用哪webdriverChromeIE},我都要求所有结果都相同。 我可以设置浏览器窗口大小如下:

driver.set_window_size(1920, 1080)

但是,以下代码将返回ChromeIE的不同值:

element = driver.find_element_by_xpath('some_xpath')
element.location

作为视口区域(显示网页内容)大小不同(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中设置浏览器视口大小?

4 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:0)

我正在使用它:

<div id="banner<?php echo $module; ?>" class="owl-carousel">

  <?php //foreach ($banners as $banner) { 
        foreach ($banners as $i => $banner) { 
  ?>


  <div class="item">

    <?php if ($banner['link']) { 
        if ( $i == 1 ) {
            echo 'YOUR HTML CONTAINING SOME TEXT HERE';
        }
    ?>
    <a href="<?php echo $banner['link']; ?>"><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" class="img-responsive" /></a>
    <?php } else { ?>
    <img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" class="img-responsive" />
    <?php } ?>
  </div>
  <?php } ?>
</div>

其中1900是宽度,990是高度。

答案 2 :(得分:0)

这是@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));

答案 3 :(得分:0)

这是@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);