【问题标题】:Is there a way to add a new attribute with a value to an element using selenium python?有没有办法使用 selenium python 向元素添加具有值的新属性?
【发布时间】:2020-09-09 20:04:56
【问题描述】:

这是 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

【问题讨论】:

  • 我尝试了以下但没有结果也没有错误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)

标签: javascript python selenium selenium-webdriver setattribute


【解决方案1】:

要添加三个新属性,您需要使用Seleniumexecute_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"的演示,您需要为visibility_of_element_located()诱导WebDriverWait,您可以使用以下Locator Strategies之一:

  • 使用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']"))))
    

参考文献

您可以在以下位置找到一些相关的详细讨论:

【讨论】:

    【解决方案2】:

    假设您可以找到要更改的element。 您可以使用 js 添加新属性:

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

    【讨论】:

      猜你喜欢
      • 2019-06-21
      • 2015-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-09
      • 2013-07-03
      • 1970-01-01
      相关资源
      最近更新 更多