Python селен закрыть модальное окно после прочтения его содержимого - PullRequest
1 голос
/ 15 апреля 2020

У меня есть 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

Как мне прочитать содержимое коробки, и если есть «Успех», я могу щелкнуть по закрытию вверху справа, чтобы go вернуться на предыдущую страницу.

У меня нет подсказка, как подойти к этому.

Редактировать: Extended HTML выглядит следующим образом:

<code>  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 + "
"showModal (msg); if (params) {if (has_extra) {showProgress (" Processing, пожалуйста, подождите ... "); doAction (" run-params "," POST "," / script / run "," user = PJMRTO LONG RUN AUCTION "+ params +" & cir = "+ getCir (), function (ret) ) {setInteraction (false); clearTimeout (updProgrs); showModal (msg + "

" + ret + "

");});} else {var ods = gete ("ods"). value; showProgress («Добавление нового задания, пожалуйста, подождите ...»); doAction («run-params», «POST», «/ job», «user = PJMRTO LONG RUN AUCTION & sdate =" + sd + "& edate =" + ed + + "& ids =" + ids + "& ods =" + ods + "& rops =" + encode (rop) + "& post =" + encode ("") + "& std =" + en code ("") + "& cir =" + getCir (), function (job) {showProgress ("Начало работы" + job + ", пожалуйста, подождите ..."); doAction ("run-params", "POST", "/ run", "id =" + job + params, function (x) {setInteraction (false); clearTimeout (updProgrs); showModal (msg + "
Job началось, проверьте статус на странице рабочих мест проекта. ");}); }); }}} 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 ("
" + xhr.responseText + "

Загрузить журнал ")); } },ложный); setInteraction (истина); if (params) {gete ("start-job"). style.display = "none"; gete ("host-status"). style.display = "none"; } var sparams = "user = PJMRTO ДЛИТЕЛЬНЫЙ АУКЦИОН РАБОТЫ & 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 («Создание базового и фиксированного сценария ввода U C ios, пожалуйста, подождите ...»); } else {showProgress ("Создание входного сценария, пожалуйста, подождите ..."); } updProgrs = setTimeout (updateProgress, 300000); xhr.open ( "POST", "/ сценарий", правда); xhr.setRequestHeader ("Content-type", "application / x- www-form-urlencoded"); xhr.setRequestHeader ( "х-CSRF-маркер", "NhISQUB1eCANGh46HwsgTnsAISkCAAAATeFn4B0myInXzZc7 + 8QJMA =="); xhr.send (sparams); }

1 Ответ

0 голосов
/ 23 апреля 2020

Так что здесь переменная "msg" хранит значение "SUCCESS". Было бы лучше получить переменную "msg" usin javascript.

Так что бы это было: -

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");

Здесь заголовок будет иметь полное сообщение.

Алгоритм состоит в том, чтобы получить значение "msg" var, используя javascript.

Для закрытия сообщения вы пытались использовать SendKeys (Keys.Es c) ??

Надеюсь, это поможет!

...