Selenium Python Get img SRC 返回实际图像数据



我正在使用Python中的Selenium并使用Firefox Web驱动程序。

我正在尝试获取图像的 SRC。当我第一次请求 SRC 时,我得到的是实际的图像数据,而不是 SRC

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQ ...

如果我第二次运行完全相同的代码,我将获得 SRC

example.jpg

这是我的代码

fireFoxOptions = webdriver.FirefoxOptions()
fireFoxOptions.set_headless()
browser = webdriver.Firefox(firefox_options=fireFoxOptions)
element = browser.find_element(By.ID , "idOfImageHere" )
imageUrl = element.get_attribute("src")
print("image src: " + imageUrl)

不确定为什么在第一次运行代码时返回图像数据,然后在第二次运行时返回 src。似乎一旦图像被缓存,它就可以获得 src 或类似的东西。

关于如何防止返回图像数据的任何建议,只是 src 链接?

谢谢

亚马逊网站元素是启用JavaScript的元素,因此要提取任何元素的src属性,您必须诱导WebDriverWaitvisibility_of_element_located(),并且可以使用以下任一定位器策略:

  • 使用ID

    print(WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.ID, "idOfImageHere"))).get_attribute("src"))
    
  • 使用XPATH

    print(WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.XPATH, "//*[@id='idOfImageHere]"))).get_attribute("src"))
    
  • 使用CSS_SELECTOR

    print(WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#idOfImageHere"))).get_attribute("src"))
    
  • 注意:您必须添加以下导入:

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

最新更新