मैं सेलेनियम और नोड.जेएस के साथ एक यूआरएल प्राप्त करने की कोशिश कर रहा हूं, लेकिन जब साइट पर अलर्ट होता है तो मैं इसे इंटरनेट एक्सप्लोरर पर स्वीकार नहीं कर सकता।

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);
0
devtool 29 सितंबर 2021, 23:38
खैर, ऐसा लगता है कि आपकी समस्या हल हो गई है। आप समाधान को उत्तर के रूप में पोस्ट कर सकते हैं, और इसे चिह्नित करने के लिए उपलब्ध होने पर इसे चिह्नित कर सकते हैं। यह भविष्य में इसी तरह के मुद्दों में अन्य समुदाय के सदस्यों की मदद कर सकता है। समझने के लिए धन्यवाद।
 – 
Xudong Peng
1 अक्टूबर 2021, 09:47

1 उत्तर

सबसे बढ़िया उत्तर

मैं इस लाइन को जोड़कर इसे काम करने में सक्षम था

options.introduceFlakinessByIgnoringProtectedModeSettings(true);

इस खंड में

let options = new ie.Options();     
options.ignoreZoomSetting(true);
options.introduceFlakinessByIgnoringProtectedModeSettings(true);

जाहिर है, इंटरनेट एक्सप्लोरर पर आपको काम करने के लिए इस विशेषता को सक्रिय करने की आवश्यकता है।

0
devtool 2 अक्टूबर 2021, 01:26