Селен Python Получить Img SR C Возвращает фактические данные изображения - PullRequest
1 голос
/ 11 января 2020

Я работаю с Selenium в Python и использую Firefox веб-драйвер.

Я пытаюсь получить SR C изображения. Когда я в первый раз запрашиваю SR C, я получаю фактические данные изображения, а не SR C

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

Если я запускаю точно такой же код во второй раз, я получу SR C

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)

Не уверен, почему данные изображения возвращаются при первом запуске кода, а затем sr c во втором запуске , Кажется, что, как только изображение кэшируется, оно может получить sr c или что-то в этом роде.

Любые предложения о том, как предотвратить возврат данных изображения, просто ссылка sr c?

Спасибо

1 Ответ

1 голос
/ 11 января 2020

Amazon элементы веб-сайта являются JavaScript включенными элементами, поэтому для извлечения атрибута src любого элемента вы должны вызвать WebDriverWait для visibility_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
    
...