Selenium (с python), как изменить стиль css элемента

Я пытаюсь изменить стиль CSS элемента (пример: от "visibility: hidden;" до "visibility: visible;"), используя selenium .execute_script. (любой другой метод через selenium + python будет принят грациозно).

мой код:

driver = webdriver.Firefox()
driver.get("http://www.example.com")

elem = driver.find_element_by_id('copy_link')

elem.execute_script(  area of my problem )

что мне нужно сделать, чтобы играть с CSS веб-страницы?

Ответ 1

Вот пример без использования jQuery. Он скроет логотип Google.

from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.google.com")
driver.execute_script("document.getElementById('lga').style.display = 'none';")

Такую же идею можно использовать для отображения скрытого элемента, например, путем установки .style.display на "block".

Ответ 2

Строка в execute_script() - это код JS, который вы хотите запустить (docs).

Если вы используете jQuery, это может быть просто

driver.execute_script("$('#copy_link').css('visibility', 'visible');")

Ответ 3

Вот решение, которое я нашел, используя таблицы стилей документов. Этот способ велик, потому что вы также можете добавить стиль псевдо-класса.

script = 'document.styleSheets[0].insertRule("button:focus {background-color: red !important;}", 0 )' 
driver.execute_script(script)