Предупреждение может быть принято при загрузке страницы с selenium в Internet Explorer?

#node.js #selenium-webdriver #internet-explorer #alert #pageload

Вопрос:

Я пытаюсь получить URL-адрес с помощью селена и node.js, но когда на сайте появляется предупреждение, я не могу принять его в Internet Explorer.

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>
 

loading.js

 alert("accept before start");
 

Это должно работать в Internet Explorer.

При запуске через 5 минут он показывает это

 UnhandledPromiseRejectionWarning: TimeoutError: Timed out waiting for page to load.
at Object.throwDecodedError (C:dadhocnodecopyimgwznode_modulesselenium-webdriverliberror.js:517:15)
    at parseHttpResponse (C:dadhocnodecopyimgwznode_modulesselenium-webdriverlibhttp.js:642:13)
 

и останавливается вот так

предупреждение о блокировке ie с помощью селена

Пожалуйста, есть какие-нибудь идеи, как принять это предупреждение с помощью селена?

Редактировать

Я нашел решение, добавив эту строку, оно уже работает нормально

 options.introduceFlakinessByIgnoringProtectedModeSettings(true);
 

Комментарии:

1. Что ж, похоже, ваша проблема решена. Вы можете опубликовать решение в качестве ответа и пометить его, когда оно будет доступно для пометки. Это может помочь другим членам сообщества в будущем в подобных вопросах. Спасибо вам за ваше понимание.

Ответ №1:

Я смог заставить это работать, добавив эту строку

 options.introduceFlakinessByIgnoringProtectedModeSettings(true);
 

в этом разделе

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

Кстати, в Internet Explorer вам необходимо активировать эту характеристику, чтобы вы могли работать.