2016-06-07 46 views
0

我正在嘗試Saucelab atm,它是一個了不起的工具。我想配置我的代碼來等待文檔和jquery加載,這樣我就可以成功完成我想測試的頁面的完整屏幕截圖。我已經加入我的腳本來這裏JS小提琴鏈接:https://jsfiddle.net/ttLLdcq1/和複製並粘貼腳本:如何等待文檔加載到Saucelab硒?

"use strict"; 
var webdriver = require('selenium-webdriver'); // muse use selenium-webdriver version <=2.47.0 
var username = "my_username"; 
var accessKey = "my_access_key"; 
var driver; 
var deviceTypes = { 
    desktop: 'desktop', 
    mobile: 'mobile' 
} 
/*Desktops*/ 
var screenResolutions = { 
    desktop: "1280x1024", 
    tablet: "1024x768", 
    mobile: "800x600" 
}; 
var browsers = [ 
    /*Desktop*/ 
    { 
     type: deviceTypes.desktop, 
     browser: 'chrome', 
     platform: 'Windows XP', 
     version: '43.0', 
     screenResolution: screenResolutions.desktop 
    }, 
    { 
     type: deviceTypes.desktop, 
     browser: 'firefox', 
     platform: 'Windows XP', 
     version: '38.0', 
     screenResolution: screenResolutions.desktop 
    }, 
    { 
     type: deviceTypes.desktop, 
     browser: 'internet explorer', 
     platform: 'Windows 10', 
     version: '11.103', 
     screenResolution: screenResolutions.desktop 
    }, 
    { 
     type: deviceTypes.desktop, 
     browser: 'safari', 
     platform: 'OS X 10.8', 
     version: '6.0', 
     screenResolution: screenResolutions.desktop 
    }, 
    /*Tablet*/ 
    { 
     type: deviceTypes.desktop, 
     browser: 'chrome', 
     platform: 'Windows XP', 
     version: '43.0', 
     screenResolution: screenResolutions.tablet 
    }, 
    { 
     type: deviceTypes.desktop, 
     browser: 'firefox', 
     platform: 'Windows XP', 
     version: '38.0', 
     screenResolution: screenResolutions.tablet 
    }, 
    { 
     type: deviceTypes.desktop, 
     browser: 'internet explorer', 
     platform: 'Windows 10', 
     version: '11.103', 
     screenResolution: screenResolutions.tablet 
    }, 
    { 
     type: deviceTypes.desktop, 
     browser: 'safari', 
     platform: 'OS X 10.8', 
     version: '6.0', 
     screenResolution: screenResolutions.tablet 
    }, 
    /*Mobiles - Android*/ 
    { 
     type: deviceTypes.mobile, 
     browserName: 'android', 
     platform: 'linux', 
     version: '5.1', 
     deviceName: 'Android Emulator', 
     deviceOrientation: 'portrait' 
    }, 

    { 
     type: deviceTypes.mobile, 
     browserName: 'android', 
     platform: 'linux', 
     version: '4.4', 
     deviceName: 'Samsung Galaxy S4 Emulator', 
     deviceOrientation: 'portrait' 
    }, 
    { 
     type: deviceTypes.mobile, 
     browserName: 'iphone', 
     platform: 'OS X 10.10', 
     version: '9.2', 
     deviceName: 'iPhone 5s', 
     deviceOrientation: 'portrait' 
    } 

]; 

var index = 0; 

loopBrowsers(); 
function loopBrowsers(){ 

    var browserConfig = browsers[index]; 
    var capabilities; 

    if(browserConfig.type === deviceTypes.desktop){ 
     capabilities = { 
      'browserName': browserConfig.browser, 
      'platform': browserConfig.platform, 
      'version': browserConfig.version, 
      'screenResolution': browserConfig.screenResolution, 
      'username': username, 
      'accessKey': accessKey 
     } 
    } else if (browserConfig.type === deviceTypes.mobile) { 
     capabilities = { 
      'browserName': browserConfig.browserName, 
      'platform': browserConfig.platform, 
      'version': browserConfig.version, 
      'deviceName': browserConfig.deviceName, 
      'deviceOrientation': browserConfig.deviceOrientation, 
      'username': username, 
      'accessKey': accessKey 
     } 
    } 

    driver = new webdriver.Builder(). 
    withCapabilities(capabilities). 
    usingServer("http://" + username + ":" + accessKey + "@ondemand.saucelabs.com:80/wd/hub"). 
    build(); 

    driver.get('http://example.com'); 

    //Taking screenshot on currently targeting browser 
    driver.takeScreenshot().then(
     function(image, err){ 

      var fileName; 

      if(browserConfig.type === deviceTypes.desktop){ 
       fileName = "screen_"+browserConfig.browser+"_"+browserConfig.screenResolution; 
      } else if (browserConfig.type === deviceTypes.mobile) { 
       fileName = "screen_"+browserConfig.deviceName+"_"+browserConfig.deviceOrientation; 
      } 

      require('fs').writeFile("screenshots/"+ fileName +".png", image, 'base64', function(err){ 
       console.log("Completed screenshot: " + index + " any errors: " + err); 

       index++; 
       if(index < browsers.length){ 
        loopBrowsers(); 
       } else { 

       } 
      }); 
     } 
    ); 
    driver.quit(); 
} 

基本上,我想等文件加載,然後採取截圖。而且,有沒有關於在Selenium中使用JS的綜合教程?例如,我想選擇一個元素,看看該元素是否位於正確的位置等等。是否有任何包裝框架這樣做,並與S​​aucelab一起工作?謝謝。

回答

0

我剛纔發現你可以等待最後加載的元素,這幾乎意味着頁面加載。