读取其内容后,Python硒关闭模式窗口

时间:2020-04-15 15:32:12

标签: selenium python-3.8

我的HTML如下:

function showModal(msg) {
      var content = document.getElementById("modal-content");
      content.innerHTML = msg;
      modal.style.display = "block";
  }

showModal(msg + "<br>Job started, check status on the project jobs page.");

说完一切之后,我得到以下窗口:

enter image description here

如何阅读框中的内容,如果显示“成功”,我可以单击右上角的关闭按钮以返回上一页。

我不知道如何解决这个问题。

编辑:扩展的HTML如下所示:

  function makeInputScenario(ids,params,has_extra = false) {
      var sd = gete("sdate").value;
      var ed = gete("edate").value;
      var sdt = new Date(sd);
      var edt = new Date(ed);
      if (sdt > edt) {
      showModal("Start date is after end date, please fix!");
      return;
      }
      var p = gete("pool").value;
      var dzr = gete("dzr").value;
      var pfd = gete("pfd").value;
      var udb = gete("udb").value;
      var uds = gete("uds").value;
      if (uds == "None") uds = "";
      var rop = gete("rop-text").value;
      var fuds = gete("fuds").value;
      if (fuds == "None") fuds = "";
      var xhr = new XMLHttpRequest();
      xhr.addEventListener("load", function() {
      hideProgress();
      if (!params) setInteraction(false);
      if (xhr.status == 200) {
          var msg = "<strong>SUCCESS:</strong><br><pre>" + xhr.responseText + "</pre>"
          showModal(msg);
          if (params) {
          if (has_extra) {
              showProgress("Processing, please wait...");
              doAction("run-params","POST","/scenario/run","user=PJMRTO LONG RUN AUCTION" + params + "&cir=" + getCir(),function (ret) {
              setInteraction(false);
              clearTimeout(updProgrs);
              showModal(msg + "<p>" + ret + "</p>");
              });
          } else {
              var ods = gete("ods").value;
              showProgress("Adding new job, please wait...");
              doAction("run-params","POST","/job","user=PJMRTO LONG RUN AUCTION&sdate=" + sd + "&edate=" + ed + "&ids=" + ids + "&ods=" + ods + "&rops=" + encode(rop) + "&post=" + encode("") + "&std=" + encode("") + "&cir=" + getCir(),function (job) {
              showProgress("Starting job " + job + ", please wait...");
              doAction("run-params","POST","/run","id=" + job + params,function (x) {
                  setInteraction(false);
                  clearTimeout(updProgrs);
                  showModal(msg + "<br>Job started, check status on the project jobs page.");
              });
              });
          }
          }
      } else if (xhr.status == 500) {
          setInteraction(false);
          clearTimeout(updProgrs);
          var logurl = "/idblog?q=host&name=" + encode(ids) + "&pool=" + encode(p) + "&sd=" + encode(sd) + "&ed=" + encode(ed);
          showModal(wrapError("<pre>" + xhr.responseText + "</pre><br><button onclick=\"getIDBlog('" + logurl + "');\" class=\"btn btn-primary\">Download Log</button>"));
      }
      },false);
      setInteraction(true);
      if (params) {
      gete("start-job").style.display = "none";
      gete("host-status").style.display = "none";
      }
      var sparams = "user=PJMRTO LONG RUN AUCTION&pool=" + p + "&dzr=" + dzr + "&pfd=" + pfd + "&ids=" + ids + "&sdate=" + sd + "&edate=" + ed + "&udb=" + udb + "&uds=" + uds + "&rop=" + encode(rop);
      if (fuds != "") {
      sparams += "&fuds=" + fuds + "&ius=" + gete("ods").value;
      showProgress("Creating base and fixed UC input scenarios, please wait...");
      } else {
      showProgress("Creating input scenario, please wait...");
      }
      updProgrs = setTimeout(updateProgress, 300000);
      xhr.open("POST","/scenario",true);
      xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      xhr.setRequestHeader("x-csrf-token","NhISQUB1eCANGh46HwsgTnsAISkCAAAATeFn4B0myInXzZc7+8QJMA==");
      xhr.send(sparams);
  }

1 个答案:

答案 0 :(得分:0)

因此,此处的变量“ msg”存储值“ SUCCESS”。最好在javascript中使用变量“ msg”。

那应该是:-

from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://Reachyourpage") 
message = driver.execute_script("return msg")
print ("SUCCESS" in message)

如果成功,它应该返回true。我不是Python的专家,而只是一个初学者,所以请注意我的编码..

等效于C#的是:-

IJavaScriptExecutor js = (IJavaScriptExecutor)_driver;
            string title = js.ExecuteScript("return msg");

此处,标题将显示完整的消息。

算法是使用javascript获取“ msg”变量的值。

对于关闭消息,您是否尝试过使用SendKeys(Keys.Esc)??

希望有帮助!!

相关问题