Итак, у меня есть следующая проблема при работе с python и селеном:
В настоящее время я пытаюсь получить исходные ссылки изображений на веб-странице. Я поставил a в xpath, потому что это позиция, которая меняется в цикле. На сайте около 30 изображений.
driver.get(url)
a = 1
while a != 100:
try:
print(WebDriverWait(driver, 3).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div[4]/div[5]/div[2]/div[3]/div/div/div/div/div['+ str(a) +']/div[1]/a/img"))).get_attribute('src'))
except:
break
a = a + 1
Первые 8 картинок работало нормально, а вот на девятой выдавало ошибку. Оно не могло найти его. После проверки кода и попытки выполнить команду вне цикла следующим образом:
print(WebDriverWait(driver, 3).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div[4]/div[5]/div[2]/div[3]/div/div/div/div/div[9]/div[1]/a/img"))).get_attribute('src'))
Он все еще не мог получить девятую картинку. Тем не менее, через час я обнаружил, что если я развернул окно, он смог получить ссылки до ссылки 19.
Итак, мои вопросы:
Почему моя программа зависит от размера окна, чтобы найти элементы?
Предположим, у меня есть огромный длинный веб-сайт с 1000 изображений на нем, и в максимальном окне вы можете увидеть только 12 из них, как я могу получить все ссылки с каждого изображения? Должен ли я написать код, который прокручивается вниз и выполняет код, прокручивается дальше и выполняется снова и снова? Или есть лучший способ?
Примечание: я новичок в мире программирования, я не использую классы или другие причудливые вещи (ООП), поэтому имейте это в виду, отвечая на мои вопросы