Python Selenium - элемент подсветки ничего не делает - PullRequest
0 голосов
/ 06 сентября 2018

Я пытаюсь выделить элементы на следующей веб-странице, используя python selenium. Я использую решение, размещенное здесь: Как я могу выделить элемент на веб-странице, используя Selenium-Python? , но это не дает никакого эффекта вообще. Я не получаю никакого сообщения об ошибке, оно просто не выделяет выбранный мной элемент. Кто-нибудь сталкивался с такой же проблемой? Вот мой код:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
import time

chromeOptions = webdriver.ChromeOptions()
driver = webdriver.Chrome()
driver.maximize_window()
url = "https://learn.letskodeit.com/p/practice"
driver.get(url)

def highlight(element):
    """Highlights (blinks) a Selenium Webdriver element"""
    driver = element._parent
    def apply_style(s):
        driver.execute_script("arguments[0].setAttribute('style', arguments[1]);",
                              element, s)
    original_style = element.get_attribute('style')
    apply_style("border: 2px solid red;")
    time.sleep(.3)
    apply_style(original_style)


open_window_elem = driver.find_element_by_id("openwindow")
highlight(open_window_elem)

1 Ответ

0 голосов
/ 06 сентября 2018

Работает нормально для меня. Обратите внимание, что он выделяет элемент (добавьте 2 пикселя красным border) только на 0.3 секунды, поэтому вы можете просто пропустить этот эффект

Вы можете добавить больше параметров для работы, например TimeToHighlight, Color, BorderSize:

def highlight(element, effect_time, color, border):
    """Highlights (blinks) a Selenium Webdriver element"""
    driver = element._parent
    def apply_style(s):
        driver.execute_script("arguments[0].setAttribute('style', arguments[1]);",
                              element, s)
    original_style = element.get_attribute('style')
    apply_style("border: {0}px solid {1};".format(border, color))
    time.sleep(effect_time)
    apply_style(original_style)

, а затем позвоните как

open_window_elem = driver.find_element_by_id("openwindow")
highlight(open_window_elem, 3, "blue", 5)

Это добавит синий 5 пикселей границу к элементу на 3 секунд

...