Измените 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 на страницу с помощью селена.