我正在使用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链接返回图像数据的任何建议?
谢谢
Amazon网站元素是启用JavaScript的元素,因此要提取任何元素的src
属性,您必须为visibility_of_element_located()
引入WebDriverWait,并且可以使用以下任何一个Locator Strategies :
使用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"))
Note:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC