2016-05-12 123 views
4

我試圖創建一個跨瀏覽器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設置瀏覽器窗口的大小?

+0

你試過嗎? http://stackoverflow.com/questions/15397483/how-do-i-set-browser-width-and-height-in-selenium-webdriver這是一個java的例子,但有一個python等效代碼 –

+0

@Pete,你意思???我已經做到了:) – Andersson

+0

@RafaelAlmeida,感謝您的建議,但它似乎是一個不同的問題 – Andersson

回答

4

這裏是函數來設置視口大小:

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

這也將包括水平和垂直頁面滾動條的大小(每個大約17px),但它確定:)謝謝 – Andersson

+0

要獲得沒有滾動條大小的視口大小,請使用'document.body.clientWidth'和'document.body.clientHeight'分別代替'window.innerWidth'和'window.innerHeight'。 – kanaka

1

我使用這個:

driver.manage().window().setSize(new org.openqa.selenium.Dimension(1900, 990)); 

其中1900是寬度,而990是高度。

+1

從文檔:「[...]這將更改外部窗口維度,而不僅僅是視圖端口[ ...]「 – crusy