पर समानांतर अनुरोध करें मैं समानांतर में एकाधिक कमांड चलाने के लिए सेलेनियम सर्वर ग्रिड का उपयोग करने का प्रयास कर रहा हूं।सेलेनियम वेबड्राइवर ग्रिड
var webdriver = require('selenium-webdriver');
for(var u = 0; u < 3; u++) {
makeScreenshot('foo/test' + u + '.png');
}
function makeScreenshot(path) {
var driver = new webdriver.Builder().forBrowser('firefox').usingServer('http://someurl:44111/wd/hub/').build();
console.log('Get');
driver.get('http://www.somepage.com').then(function() {
console.log('Screenshot');
driver.takeScreenshot().then(function(data){
console.log(path);
//var decodedImage = new Buffer(data, 'base64')
driver.quit();
});
});
}
परिणाम है कि: यहाँ मेरा पहला परीक्षण कोड है
Get
Get
Get
Screenshot
foo/test0.png
Screenshot
foo/test1.png
Screenshot
foo/test2.png
"जाओ" तुरंत अनुक्रम में प्रदर्शित "driver.get" एक वादा पैदा करता है। मेरा विचार यह है कि तीन अनुरोध अतुल्यकालिक रूप से किए जाते हैं और इस प्रकार लगभग एक साथ दिखाई देते हैं। लेकिन जैसा कि आप स्क्रीनशॉट में देख सकते हैं, उन्हें एक के बाद एक बनाया जाएगा। ग्रिड में निश्चित रूप से पर्याप्त सेलेनियम उदाहरण हैं तो ड्राइवर समानांतर में क्यों काम नहीं कर रहा है? मुझे ऐसा लगता है कि "नया वेबड्राइवर.बिल्डर()" किसी प्रकार का सिंगलटन बनाता है जो एसिंक काम नहीं करता है लेकिन पिछले अनुरोध को पूरा करने की प्रतीक्षा करता है !?
किसी भी मदद के लिए धन्यवाद!
अच्छा, धन्यवाद! यह अब काफी async दिखता है, उस सुविधा को ध्यान में नहीं देखा है। मुझे आश्चर्य है कि क्या यह अब हब में सेलेनियम इंस्टेंस पर समानांतर परीक्षण चलाता है या यदि लोड संतुलन अपेक्षित काम करता है। लेकिन मुझे पता चल जाएगा;) – Gibbonson