【问题标题】:How to get background-url in Python?如何在 Python 中获取背景 URL?
【发布时间】:2015-05-12 10:07:03
【问题描述】:

我正在尝试使用 Selenium WebDriver 在 Python 中获取背景 url 属性。适用于 'color' 和 'position' 属性,但不适用于 'background' 或 'background-url'。

home = driver.find_element_by_id("link-home")
print(home.value_of_css_property("position"))
=> absolute

谁能帮帮我?

这是css:

#main-header a#link-home {
    background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB8AAAATCAYAAABobNZCAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOFJREFUeNpiPLRnNQMR4D8QM2KTsHUOYSAXMBFpMTKNLP6fgQLARKTFjDgcwEAry5Et5qeFA5iIsNgDiO9Baao6gImAxX5AvBGIhaC0H66ERw3LkS0OB2JQVmCDirFB+eHUcgATDosTgHgpksUMSA5YCpUHO+Dw3jX/KbUc2eI0IJ4PxMxQPgjPQmIzQ+XTKHUAE5rFOUA8E0l+JhJ/Jha5fGAhQ7YDGJFKuGogbkGXR7IoHUdKrwE6oJXSOG/BkfL/Q4MYV4nWQsvilWaAhVC04CkHaFq80hyMWj7yLAcIMADiujmyHco+MAAAAABJRU5ErkJggg==") no-repeat scroll 0px 0px transparent;
    left: 10px;
    padding-left: 23px;
    position: absolute;
    top: -102px;
    color: #DFEFFC;
}

【问题讨论】:

  • 请提供网页链接。
  • 为什么需要网页链接?由于网页本身是内网,恐怕无法提供链接。
  • @bobafett 它可能是特定于 webelement 的 - 这就是为什么有一个重现问题的链接会很高兴 - 我已经尝试使用 w3schools.com/cssref/tryit.asp?filename=trycss_backgroundelement.value_of_css_property("background") 为我工作。
  • 嗨@alecxe 感谢您的回答。我尝试了以下代码,但它不起作用driver = webdriver.Firefox() driver.get("http://www.w3schools.com/cssref/tryit.asp?filename=trycss_background") body = driver.find_element_by_tag_name("body") print(body.value_of_css_property("background")) => none。在你的代码元素是body?
  • @bobafett 我已将您的问题回滚到您在其中编辑解决方案之前的状态。请不要这样做。如果您想发布自己的解决方案,请将其作为实际答案发布。谢谢。

标签: python css selenium


【解决方案1】:

我已经重现了在 firefox 中获取 backgroundbackground-url 属性的问题(使用 firefox 35.0.1 和 selenium 2.45)。

在 Firefox 中对我有用的解决方法:

print driver.execute_script("""
var element = arguments[0],
    style = element.currentStyle || window.getComputedStyle(element, false);

return style['background-image'];
""", body)

演示:

>>> from selenium import webdriver
>>> 
>>> driver = webdriver.Firefox()
>>> driver.get("http://www.w3schools.com/cssref/tryit.asp?filename=trycss_background")
>>> 
>>> driver.switch_to.frame("iframeResult")
>>> 
>>> body = driver.find_element_by_tag_name("body")
>>> 
>>> print driver.execute_script("""
... var element = arguments[0],
...     style = element.currentStyle || window.getComputedStyle(element, false);
... 
... return style['background-image'];
... """, body)
url("http://www.w3schools.com/cssref/smiley.gif")

或者,直接切换到webdriver.Chrome()

【讨论】:

  • 嗨@alecxe,我没有得到任何结果,因为没有'background-image'属性:driver = webdriver.Firefox() driver.get("http://www.w3schools.com/cssref/tryit.asp?filename=trycss_background") body = driver.find_element_by_tag_name("body") print(driver.execute_script(""" var element = arguments[0], style = element.currentStyle || window.getComputedStyle(element, false); return style['background-image']; """, body)) => none 但是如果我用'background'或'background-url'替换'background-image'并再次运行结果是一个空格。我做错了什么?
猜你喜欢
  • 2011-03-15
  • 2019-10-23
  • 1970-01-01
  • 2015-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-09
  • 2021-11-04
相关资源
最近更新 更多