Python+Selenium如何检查使用CSS设置样式并显示为内容的图像?

2024-09-28 20:57:56 发布

您现在位置:Python中文网/ 问答频道 /正文

Details 通常情况下,通过ID可以轻松显示图片。但在我的示例中,这些图片显示为内容/字符:

.fa-calendar-alt:before {
    Synchro : "\f073";

我能在这里做什么


Tags: id示例内容情况图片alt字符calendar
3条回答

关于您的用例的更多细节将有助于我们构建一个更规范的答案。但是,所需的元素与CSSpseudo-element一起应用

通常Calendar元素是交互的。因此,要识别日历元素,您需要为element_to_be_clickable()引入WebDriverWait,您可以使用以下Locator Strategies之一:

  • 使用CSS_SELECTOR

    calendar = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "i.far.fa-calendar-alt")))
    
  • 使用XPATH

    calendar = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//i[@class='far fa-calendar-alt']")))
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

CSS伪元素

现在,如果您的用例是提取^{}元素的content属性值,即Synchro : "\f073",您可以使用以下解决方案:

script = "return window.getComputedStyle(document.querySelector('.fa-calendar-alt'),':before').getPropertyValue('content')"
print(driver.execute_script(script).strip())

参考文献

有关详细讨论,请参见:

检查类名(如果存在),然后执行下一步

例如driver.find_element_by_class_name("far fa-calendar-alt")

或者您可以定义它的xpath。如果您需要知道如何查找xpath,请告诉我

编辑:Xpath示例:

//div//i[@class="far fa-calendar-alt"]

如果我理解正确,您需要检查before伪元素的“content”值。 在这种情况下,我建议您尝试使用JS。看看这里,看看如何运行JS code via selenium

return document.defaultView.getComputedStyle(document.querySelector('.far.fa-calendar-alt'), ':before')['content'];

获取值后,可以进行简单的字符串比较

相关问题 更多 >