#excel #vba #selenium
#excel #vba #селен
Вопрос:
Я создал код с использованием selenium для входа в Facebook, и я пытаюсь получить все ссылки на изображения для определенного сообщения в группе
Sub Facebook()
Dim bot As New WebDriver
With bot
.AddArgument "--disable-notifications"
.Start "Chrome", "https://www.facebook.com"
.Get "/"
.FindElementById("email").SendKeys "email"
.FindElementById("pass").SendKeys "pass"
.FindElementById("u_0_b").Click
.Wait 5000
.Get "https://www.facebook.com/permalink.php?story_fbid=2776252612695761amp;id=2341556939498666"
'.FindElementByClass("l9j0dhe7").Click
.Wait 5000
End With
Stop
End Sub
Я пытался найти какую-либо подсказку, но я потерялся и не могу найти отправную точку для получения ссылок.
Чтобы упростить проблему, это сообщение в группе, и в сообщении содержится около 66 изображений, которые мне нужны, чтобы привести ссылки на эти изображения.
Комментарии:
1. Вы уверены, что локаторы стабильны? Я знаю, что FB использует динамические локаторы.
2. Я не уверен. Я прошу убедиться, возможно ли это, или я должен избавиться от этой идеи.
3. Я опубликую обходной путь в качестве ответа
Ответ №1:
Вместо перехода на ту страницу, где находится изображение, вы можете перейти прямо к первой фотографии из альбома. (Я не буду публиковать URL-адрес, потому что он слишком длинный)
Оттуда выполните следующие действия:
-
Получите ссылку из этого локатора:
WebElement image = driver.findElement(By.xpath(«// div[@data-pagelet=’MediaViewerPhoto’]/div/img«));
Строка link = image.getAttribute(«src»);
-
Перейдите к следующему изображению, нажав на кнопку Далее:
//div[@aria-label='Next photo' and @role='button']
и продолжайте очищать ссылку.
Вы можете добавить свой код в цикл while и делать это до тех пор, пока не появится кнопка next (когда вы дойдете до последнего изображения, кнопка будет недоступна). Кроме того, добавьте ожидание перед переходом к следующему изображению, чтобы убедиться, что оно правильно загружено.