मैं सेलेनियम और नोड.जेएस के साथ एक यूआरएल प्राप्त करने की कोशिश कर रहा हूं, लेकिन जब साइट पर अलर्ट होता है तो मैं इसे इंटरनेट एक्सप्लोरर पर स्वीकार नहीं कर सकता।
Index.js
require('iedriver');
const express = require('express');
const webdriver = require('selenium-webdriver');
let ie = require('selenium-webdriver/ie');
function start(params) {
start_server();
let options = new ie.Options();
options.ignoreZoomSetting(true);
let driver = new webdriver.Builder()
.forBrowser('internet explorer')
.withCapabilities(options)
.build();
let site="http://127.0.0.1:3000/";
driver.get(site)
.then(()=>{
return driver.wait(webdriver.until.alertIsPresent(),10000)
.then(()=>{
let alert = driver.switchTo().alert();
return alert.accept()
console.log("go on");
})
})
;
}
const start_server=()=>{
const app = express();
const PORT = 3000;
app.use(express.static('static'));
app.get('/', function(req, res){
let options = {
root: path.join(__dirname+"/../static/")
};
let fileName = 'index.html';
res.sendFile(fileName, options, function (err) {
if (err) {
log(err);
} else {
console.log('Sent:', fileName);
}
});
});
app.listen(PORT, function(err){
if (err) console.log(err);
console.log("Server listening on PORT", PORT);
});
};
start();
पेज लोड होने पर साइट को खोलने के लिए एक अलर्ट होता है, जैसे:
Index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="loading.js"></script>
<title>Document</title>
</head>
<body>
</body>
</html>
लोड हो रहा है.जेएस
alert("accept before start");
इसे इंटरनेट एक्सप्लोरर पर काम करना है।
दौड़ते समय, 5 मिनट के बाद यह दिखाता है
UnhandledPromiseRejectionWarning: TimeoutError: Timed out waiting for page to load.
at Object.throwDecodedError (C:\d\adhoc\node\copyimgwz\node_modules\selenium-webdriver\lib\error.js:517:15)
at parseHttpResponse (C:\d\adhoc\node\copyimgwz\node_modules\selenium-webdriver\lib\http.js:642:13)
और इस तरह रुक जाता है
ब्लॉकिंग अलर्ट यानी सेलेनियम के साथ
कृपया, कोई विचार है कि सेलेनियम के साथ उस अलर्ट को कैसे स्वीकार किया जाए?
संपादित करें
मुझे एक समाधान मिला, इस लाइन को जोड़कर यह पहले से ही ठीक काम कर रहा है
options.introduceFlakinessByIgnoringProtectedModeSettings(true);
1 उत्तर
मैं इस लाइन को जोड़कर इसे काम करने में सक्षम था
options.introduceFlakinessByIgnoringProtectedModeSettings(true);
इस खंड में
let options = new ie.Options();
options.ignoreZoomSetting(true);
options.introduceFlakinessByIgnoringProtectedModeSettings(true);
जाहिर है, इंटरनेट एक्सप्लोरर पर आपको काम करने के लिए इस विशेषता को सक्रिय करने की आवश्यकता है।
संबंधित सवाल
नए सवाल
node.js
Node.js एक घटना-आधारित, गैर-अवरोधक, अतुल्यकालिक I / O रनटाइम है जो Google के V8 जावास्क्रिप्ट इंजन और libuv लाइब्रेरी का उपयोग करता है। इसका उपयोग उन अनुप्रयोगों को विकसित करने के लिए किया जाता है जो क्लाइंट पर और साथ ही सर्वर साइड पर जावास्क्रिप्ट को चलाने की क्षमता का भारी उपयोग करते हैं और इसलिए कोड के पुन: प्रयोज्य और संदर्भ स्विचिंग की कमी से लाभान्वित होते हैं।