Есть ли способ добавить новый атрибут со значением к элементу с помощью selenium python?

Вот HTML

<img src="//www.shahidpro.tv/uploads/articles/220cc817.jpg" width="408" height="605" vspace="" hspace="" border="0" alt="">

Я пытаюсь добавить 3 новых атрибута, чтобы он понравился

<img src="//www.shahidpro.tv/uploads/articles/220cc817.jpg" width="408" height="605" vspace="" hspace="" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" data-mce-style="display: block; margin-left: auto; margin-right: auto;" data-mce-selected="1">

Я хочу добавить:

  • style="display: block; margin-left: auto; margin-right: auto;"
  • data-mce-style="display: block; margin-left: auto; margin-right: auto;" и
  • data-mce-selected="1"

Я пытался:

image = WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "body.mce-content-body#tinymce > p/a/img")))
browser.execute_script("arguments[0].style='display: block; margin-left: auto; margin-right: auto;'", image)
browser.execute_script("arguments[0].data-mce-style='display: block; margin-left: auto; margin-right: auto;'", image)
browser.execute_script("arguments[0].data-mce-selected='1'", image)     ` but got no results nor errors

person Amr    schedule 09.09.2020    source источник
comment
sqa. stackexchange.com/questions/3387/   -  person Swaroop Humane    schedule 10.09.2020
comment
Я пробовал следующее, но не получил ни результатов, ни ошибок image = WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "body.mce-content-body#tinymce > p/a/img"))) browser.execute_script("arguments[0].style='display: block; margin-left: auto; margin-right: auto;'", image) browser.execute_script("arguments[0].data-mce-style='display: block; margin-left: auto; margin-right: auto;'", image) browser.execute_script("arguments[0].data-mce-selected='1'", image)   -  person Amr    schedule 10.09.2020


Ответы (2)


Чтобы добавить три новых атрибута, вам нужно использовать Selenium execute_script() метод.

Теперь вы хотите добавить следующие атрибуты:

  • style="display: block; margin-left: auto; margin-right: auto;"
  • data-mce-style="display: block; margin-left: auto; margin-right: auto;"
  • data-mce-selected="1"

Метод их добавления будет аналогичным, и в качестве демонстрации добавления атрибута data-mce-selected="1" необходимо вызвать WebDriverWait для visibility_of_element_located(), и вы можете использовать любое из следующих Стратегии поиска:

  • Использование CSS_SELECTOR:

    element = WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "img[src='//www.shahidpro.tv/uploads/articles/220cc817.jpg']")))
    browser.execute_script("arguments[0].setAttribute('value','28/02')", element)
    
  • Используя XPATH и в одну строку:

    browser.execute_script("arguments[0].setAttribute('data-mce-selected','1')", WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.XPATH, "//img[@src='//www.shahidpro.tv/uploads/articles/220cc817.jpg']"))))
    

использованная литература

Вы можете найти пару соответствующих подробных обсуждений в:

person DebanjanB    schedule 09.09.2020

Допустим, вы можете найти element, который хотите изменить. Вы можете добавить новый атрибут с помощью js:

driver.execute_script("arguments[0].setAttribute('style', 'display: block; margin-left: auto; margin-right: auto;');", element)
person Aliaksandr Plekhau    schedule 09.09.2020