Как отобразить фрагмент HTML / Javascript на странице HTML (открытый текст) с помощью python?

#javascript #html #python-3.x

#javascript #HTML #python-3.x

Вопрос:

Я пытаюсь отобразить error message on HTML page .

Сообщение об ошибке представляет собой комбинацию HTML / Javascript, как показано ниже.

 WebDriverException: Message: unknown error: Element 

    <div id="sidebar_item_Reports" style="height: 18px; white-space:nowrap;" onclick="
            if (window.Event amp;amp;amp;amp; Event.stopProp)
              Event.stopProp(event);
          " onmousedown="
            if(Global.Central!=null) {
            Global.Central.SelectItem('Reports',event);}
            " class="sidebar_item sidebar_item_selected listItemSelected_fill skinGradient">...</div> is not clickable at point (105, 67). Other element would receive the click: <div class="overlay_concerto" style="position: absolute; height: 100%; width: 100%; left: 0px; top: 0px; z-index: 10;"></div>
      (Session info: chrome=61.0.3163.100)
      (Driver info: chromedriver=2.30.477700 (0057494ad8732195794a7b32078424f92a5fce41),platform=Windows NT 6.1.7601 SP1 x86_64)
 

Поскольку я встраиваю то же самое, t считается объектами HTML.

  1. Как я могу отобразить точное сообщение об ошибке (как показано выше, вместе с тегами) на HTML-странице?
  2. Я пытаюсь сделать это с помощью python. Какие-либо модули python доступны для этого?

<plaintext> похоже, не работает с последними версиями HTML. Пробовал <pre> and <code> также теги.

Код:

 var = """WebDriverException: Message: unknown error: Element 

    <div id="sidebar_item_Reports" style="height: 18px; white-space:nowrap;" onclick="
            if (window.Event amp;amp;amp;amp; Event.stopProp)
              Event.stopProp(event);
          " onmousedown="
            if(Global.Central!=null) {
            Global.Central.SelectItem('Reports',event);}
            " class="sidebar_item sidebar_item_selected listItemSelected_fill skinGradient">...</div> is not clickable at point (105, 67). Other element would receive the click: <div class="overlay_concerto" style="position: absolute; height: 100%; width: 100%; left: 0px; top: 0px; z-index: 10;"></div>
      (Session info: chrome=61.0.3163.100)
      (Driver info: chromedriver=2.30.477700 (0057494ad8732195794a7b32078424f92a5fce41),platform=Windows NT 6.1.7601 SP1 x86_64)"""

file_handler = open("test.html, "w")
file_handler.write("<!DOCTYPE html><html><head><body>" var "</body></head></html>")
 

Вывод на HTML-странице:

 WebDriverException: Message: unknown error: Element
...
is not clickable at point (105, 67). Other element would receive the click: (Session info: chrome=61.0.3163.100) (Driver info: chromedriver=2.30.477700 (0057494ad8732195794a7b32078424f92a5fce41),platform=Windows NT 6.1.7601 SP1 x86_64)
 

Возможно ли это? Может кто-нибудь, пожалуйста, помочь мне здесь?

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

1. Я думаю, вам следует просто преобразовать всю ошибку в строку, используя error.toString() или String(error), а затем передать ее как внутренний html некоторого div

2. @Irfanwani: вся ошибка имеет тип ‘str’

3. Попробуйте. Теперь он будет привязан

4. @Irfanwani Нет, это не сработало. Это то же самое, что указано в приведенном выше выводе. Приведенный выше код делает то же самое, что вы упомянули.

5. Это возможно. Это случилось со мной однажды, но это было по ошибке. Вот почему я не помню, как это сделать. Но это возможно

Ответ №1:

 let st = `WebDriverException: Message: unknown error: Element <div id="sidebar_item_Reports" style="height: 18px; white-space:nowrap;" onclick="if (window.Event amp;amp;amp;amp; Event.stopProp)Event.stopProp(event);" onmousedown="if(Global.Central!=null) {Global.Central.SelectItem('Reports',event);}" class="sidebar_item sidebar_item_selected listItemSelected_fill skinGradient">...</div> is not clickable at point (105, 67). Other element would receive the click: <div class="overlay_concerto" style="position: absolute; height: 100%; width: 100%; left: 0px; top: 0px; z-index: 10;"></div>(Session info: chrome=61.0.3163.100)(Driver info: chromedriver=2.30.477700 (0057494ad8732195794a7b32078424f92a5fce41),platform=Windows NT 6.1.7601 SP1 x86_64)`
    
let newStr = st.replace('<', 'amp;<');
let latest = newStr.replace('>', 'amp;>');
document.getElementById('d').innerHTML = latest; 
 <!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">
        <title>Document</title>
    </head>
    <body>
        <div id='d'>
        </div>
    </body>
    </html> 

ОБЪЯСНЕНИЕ:

В html, если мы хотим напечатать имя тега внутри страницы (такое же, как ваше условие), нам нужно заменить угловые скобки на amp;< (for < ) и amp;> (for > ) .

Итак, в вашей проблеме, поскольку мы не можем сделать это вручную, потому что это сообщение об ошибке, а не какой-то рукописный код. Итак, я использовал javascript для связи < с amp;< и > amp;> с.

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

1. Спасибо, Ирфан. Содержит ли документ все это сообщение об ошибке? Не могли бы вы объяснить? Я знаком с python.

2. Понял, что концепция замены. Как насчет document.getElementById(‘d’).innerHTML = latest; ? Что он делает здесь? Можем ли мы сделать это аналогичным образом на python?

3. Я просто заменил, как вы упомянули выше, это сработало для меня. Большое вам спасибо, Ирфан.

4. На самом деле это просто происходит во внешнем интерфейсе. Я не думаю, что вам нужен python здесь. но если вы получаете ошибку в серверной части, вы можете передать это в шаблон и сделать то же самое, что указано в ответе.

5. document.getElementById(‘d’).innerHTML = latest; возвращает элемент с id = ‘d’, который здесь является div, и я устанавливаю его внутренний html равным последнему, который является новой созданной строкой.