Да, в Selenium есть возможность использовать метод execute_script
не только относительно драйвера, но и относительно определенного элемента на веб-странице, который представляет собой экземпляр класса WebElement
.
Метод execute_script
позволяет выполнять JavaScript-код на веб-странице, и в качестве первого аргумента принимает сам код, который нужно выполнить. Но помимо кода, можно также указать объект, на котором будет выполнен этот код.
Для выполнения JavaScript-кода относительно WebElement, вам нужно сначала получить экземпляр класса WebElement
, с которым вы хотите работать. Это можно сделать, найдя элемент на веб-странице с помощью методов поиска, таких как find_element_by_id
, find_element_by_xxx
, где xxx
- это методы поиска элемента, такие как name
, class_name
, tag_name
и так далее.
Вот пример применения метода execute_script
относительно WebElement:
from selenium import webdriver # Создайте экземпляр веб-драйвера driver = webdriver.Chrome() # Загрузите веб-страницу driver.get("https://www.example.com") # Найдите элемент на веб-странице element = driver.find_element_by_id("my-element-id") # Выполните JavaScript-код относительно элемента result = driver.execute_script("return arguments[0].innerHTML;", element) # Выведите результат print(result) # Закройте веб-драйвер driver.quit()
В этом примере мы сначала создаем экземпляр веб-драйвера и загружаем веб-страницу. Затем мы находим элемент на веб-странице с помощью метода find_element_by_id
, и сохраняем его в переменную element
. Затем мы используем метод execute_script
, передавая в него строку JavaScript-кода, который возвращает innerHTML элемента. Мы также передаем element
в качестве аргумента для указания, что код должен выполняться именно относительно этого элемента. Значение, возвращенное методом execute_script
, сохраняется в переменной result
и выводится на экран.
Таким образом, можно использовать execute_script
относительно только WebElement в Selenium, чтобы выполнять JavaScript-код на веб-странице, взаимодействовать с элементами и получать результаты.