Измените HTML с помощью Selenium

Я хочу использовать Selenium (работающий с Python 3) для изменения определенного HTML-элемента в браузере, чтобы вокруг него были теги "mark" (тем самым выделяя интересующий меня текст). Есть ли способ сделать это?

2 ответа

Вы, вероятно, захотите выделить поле ввода и, вероятно, хотите, чтобы оно было выделено только на короткое время...

Вот функция, которую я использую для выделения элементов:

def highlight_element(element):
    driver_elem = element.parent

    def apply_style(s):
        driver_elem.execute_script("arguments[0].setAttribute('style', arguments[1]);",
                                   element, s)

    original_style = element.get_attribute('style')
    apply_style("background: yellow; border: 2px solid red;")
    sleep(0.5)
    apply_style(original_style)

Вы должны передать функции элемент, например:

highlight_element(driver.find_element_by_id("username"))

Это легко сделать, если на странице используется jQuery:

driver.execute_script('$("#some_id").wrap("<mark></mark>")')

Если на странице не используется jquery, вы можете добавить ее вручную с помощью следующего скрипта:

from selenium import webdriver
import time

driver = webdriver.Firefox()
driver.get(url)

driver.execute_script("""var jquery_script = document.createElement('script');
jquery_script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js';
document.getElementsByTagName('head')[0].appendChild(jquery_script);""")

time.sleep(0.5) # you need to let jquery load first
driver.execute_script('$ = window.jQuery;')

driver.execute_script('$("#some_id").wrap("<mark></mark>")')

Приветствуем Furas за помощь в этом вопросе: как добавить jQuery на страницу с помощью селена.

Другие вопросы по тегам