python - 如何使用 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>
解决方案
要获取背景图像,您需要使用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])
参考
您可以找到与以下内容相关的几个相关讨论:
- 在断言 Selenium getCssValue("background") 返回的背景颜色 rgb(255,255,255) 时检索如何将 #ffffff 转换为 #fff 或 #fff 为 #ffffff 中的背景
- 如何通过 Python 中的 Selenium 从相对于多个分隔符动态变化的字符串中检索子字符串
推荐阅读
- javascript - 尝试在 React 中动态添加新行
- python - 如何在 python 中将 string = "[a, [b, c, [d, e], f]" 转换为 a_list = [a, [b, c, [d, e], f]?
- python - random.randint() 在打印时有效,但在赋值时无效
- algorithm - 有效地选择一个范围内的可用号码
- reactjs - 使用 Zusand/React 获取多个状态(简写语法)
- list - 如何将函数应用于 haskell 中的列表?
- python - 我尝试检查两个列表中数字的总和,但出现错误“TypeError:+ 的不支持的操作数类型:'int' 和 'str'”
- templates - 以模板类为参数的可变参数类构造函数
- reactjs - 我可以在 GitHub 的同一存储库中上传代码和部署代码吗?
- javascript - 我正在使用一个文件来存储付款详细信息。我正在使用 fs 模块对其进行更改。它在本地服务器上工作,但在 heroku 上不工作