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的綜合教程?例如,我想選擇一個元素,看看該元素是否位於正確的位置等等。是否有任何包裝框架這樣做,並與Saucelab一起工作?謝謝。