Используйте значение Python внутри переменной Javascript

#python #selenium-webdriver

Вопрос:

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

В основном я пытаюсь заменить слова на веб-странице ссылками вокруг этих слов (например, «google» на » Эти слова и ссылки взяты из csv, который считывается с помощью python, а затем используется в качестве vars внутри исполнителя javascript (поиск по var = «переменная из csv»). И вот тут я застрял, так как не могу заставить эти переменные python использоваться внутри javascript «var». Надеюсь, я говорю разумно.

Вот код:

                   js = """var search = "google" # this works
                          var search = "{}";.format(mystring) # but this doesn't
                          var replacement = "{}";.format(mylink)
                          var replacementTag = '" replacement "' target='_blank'>" search "</a>";
                          document.body.innerHTML = document.body.innerHTML.split(search).join(replacementTag);
                       """

                  driver.execute_script(js)
 

Спасибо!

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

1. вам нужно .format позвонить после закрытия """

2. Спасибо, но я пробовал, и это не работает. Может быть, есть еще какие-нибудь идеи?

3. Можете ли вы показать, что вы пробовали, и объяснить, как это «не работает»?

4. Я пытаюсь заменить ссылки в DOM своими собственными, основанными на поисковых словах. Для этого я хотел бы отправить переменные из python в javascript (var = «замененная ссылка»), но не могу отправить их, что бы я ни делал. Любая помощь приветствуется 🙂

5. Я имею в виду, пожалуйста, отредактируйте свой вопрос, чтобы показать вашу попытку, которая стоит .format после строки, чтобы я (и другие!) могли видеть, что с ней не так. Ваш исходный код, который .format находится внутри строкового литерала, не сильно помогает в этом. И покажите нам, каков фактически созданный код javascript, если это неверно (вы всегда можете print(js) увидеть!)