首页 > 解决方案 > 如何使用 selenium 从内联 css 获取背景图像

问题描述

使用 python 如何使用 selenium 获取背景图像?哪个有内联 CSS?我想从背景图像中获取图像 URL: url()

<div id="pic" class="pic" data-type="image" style=" background-image: url(http://test.com/images/image.png;); height: 306px; background-size: cover;"></div>

标签: pythonseleniumxpathcss-selectorsvalue-of-css-property

解决方案


要获取背景图像,您需要使用value_of_css_property(property_name)方法,并且您必须诱导WebDriverWait并且visibility_of_element_located()您可以使用以下任一Locator Strategies

  • 使用CSS_SELECTOR

    import re
    
    my_property = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.pic#pic[data-type='image']"))).value_of_css_property("background-image")
    print(re.split('[()]',my_property)[1])
    
  • 使用XPATH

    import re
    
    my_property = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='pic' and @id='pic'][@data-type='image']"))).value_of_css_property("background-image")
    print(re.split('[()]',my_property)[1])
    
  • 控制台输出:

    test.com/images/image.png
    

更新

由于 url 用双引号括起来,即"..."您可以使用以下解决方案:

print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='pic' and @id='pic'][@data-type='image']"))).value_of_css_property("background-image").split('"')[1])

参考

您可以找到与以下内容相关的几个相关讨论:


推荐阅读