2017-05-05 22 views
0

情況:我們需要在Nightwatch中針對不同屏幕尺寸(桌面,平板電腦,智能手機佈局等)運行測試,因此我們需要將瀏覽器窗口調整爲特定尺寸。比方說,平板電腦斷點是1024x768,所以我們將destop的窗口寬度和高度設置爲全局爲1025x768,但是當測試運行時,它會失敗,因爲佈局仍處於平板電腦模式(並且屏幕截圖顯示實際內容區域的大小1006×636)。使用Nightwatch調整大小的窗口更小

經過一番研究(question1question2question3),事實證明,調整大小設置整個窗口大小爲1024x768沒有考慮到瀏覽器的邊框和滾動條等這樣的元素,讓則實際內容區域仍然很大小。對於每個瀏覽器和操作系統來說都是不同的,而且在Windows和Linux上,你基本上可以定義自己的窗口樣式,它會再次添加不同的大小,所以我們無法計算它。

問題:有什麼方法可以使用Nightwach/javascript將窗口內容區域設置爲特定的大小?

回答

1

根據Selenium wire protocol,您只能調整窗口大小。但是,如果您將所需大小與實際獲得的大小進行比較,則可以再次調整大小以適應其大小。例如:

var target = { width: 600, height: 400 }; 
browser 
    .resizeWindow(target.width, target.height) 
    .getElementSize('body', function(result) { 
     console.log("My content is ", result.value.width, " by ", result.value.height); 
     browser 
      .resizeWindow(target.width + (target.width - result.value.width), 
          target.height + (target.height - result.value.height)) 
      .getElementSize('body', function(result) { 
       console.log("Now my content is ", result.value.width, " by ", result.value.height); 
      }) 
    }) 

運行此我得到:(不同的框架,也應與NW工作)

My content is 584 by 270 
Now my content is 600 by 400 

Here is another way to do it在瀏覽器中運行的JavaScript片段,以確定窗口填充

+0

嘿喬納森,謝謝,這很有用!並進一步進入你建議的方向,我發現實際上有一些客戶端JavaScript做到這一點:'window.outerWidth','window.innerWidth','window.outerHeight','window.innerHeight'。所以使用這些可以編寫一個命令,避免等待實際頁面完全加載,以便進行大小調整,這可能是一種更好的方法。 – anasarbescu