Селен - Не могу загрузить следующий ящик в Instagram - PullRequest
0 голосов
/ 22 ноября 2018

Я использую Selenium для поиска элементов на странице Instagram.

Я успешно вошел в систему и загрузил профиль пользователя, однако не могу загрузить их следующее окно.

Когда вбраузер, если вы щелкнете по следующей ссылке, он загружает окно, которое вы можете прокрутить, чтобы увидеть следующий список.

При использовании селена я сделал следующее -

var opt = new PhantomJSOptions();
        opt.AddAdditionalCapability("phantomjs.page.settings.userAgent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36");

var driver = new PhantomJSDriver(driverService, opt);

var element = driver.FindElementByName("username");
    element.SendKeys(userName);
    element = driver.FindElementByName("password");
    element.SendKeys(passWord);

    // find the login button and click it after credentials have been populated
    element = driver.FindElement(By.XPath("//button[.='Log in']"));
    element.Click();

    // Now navigate to the users page
    driver.Navigate().GoToUrl("https://www.instagram.com/" + accName);

На этом этапе IЯ успешно вошел в систему, на странице пользователей и могу найти следующую ссылку и щелкнуть ее, выполнив -

var element = driver.FindElementByPartialLinkText("following");
element.Click();

Однако при событии щелчка это странным образом возвращает меня на главную страницу входа в Instagram.

Еще одна вещь, которую я заметил, это то, что если вы находитесь в браузере и нажимаете на ссылку, URL-адрес в браузере обновляется до -

https://www.instagram.com/{username}/following/

Однако, если вы скопируете эту ссылку и вставите ее вновое окно и попытайтесь перейти к нему, оно не загружает следующее окно автоматически, как я ожидал, а просто переносит вас на главную страницу пользователей.

Я нашел примеры в python, где люди, кажется, успешно используютсобытие щелчка, например пример использования python .

Как этого добиться с помощью C #?Я не уверен, что Instagram полностью заблокировал это действие.

Я не уверен, что это важно, но я использую немного более старую версию Selenium Web Driver 3.8.0.Мне также пришло в голову, возможно, использовать ChromeDriver вместо PhantomJS, но я не уверен, что это будет иметь какое-либо значение.

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Еще одна вещь, которую я заметил, это то, что если вы находитесь в браузере и нажимаете на ссылку, URL-адрес в браузере обновляется до -

https://www.instagram.com/{username}/following/

Однако, если вы копируетеэту ссылку и вставьте ее в новое окно и попробуйте перейти к ней, она не загружает следующее окно автоматически, как я ожидал, а просто переносит вас на главную страницу пользователей.

Если я неошибочно это происходит потому, что при нажатии этой кнопки отправляется запрос POST: enter image description here

Но когда вы пропустите этот URL в браузере, то будет выполнен запрос GET, и в нем отсутствуют некоторые необходимые данные,

Я бы посоветовал вам отладить вашу проблему, чтобы проверить следующее:

Что происходит, когда вы нажимаете на ссылку?Если все работает хорошо, вам нужно дождаться загрузки страницы / скриптов.Есть много нюансов в том, как это сделать.Вы можете обратиться за помощью: Ожидание загрузки страницы в Selenium .

Ссылка на код Python, который вы дали, содержит просто код, который нетрудно преобразовать в C #, но автор этого не делаетопишите свою проблему там.Теперь ваша проблема в том, что вы не можете вызвать нужное всплывающее окно, поэтому работайте с ним.

Thread.Sleep() не является предпочтительным методом, но вы можете использовать его для отладки, если это поможет.Если это помогает, и вы не хотите углубляться в то, как ждать загрузки страницы / скриптов, вы можете оставить все как есть.

0 голосов
/ 29 ноября 2018

К сожалению, у меня нет учетной записи Instagram, чтобы можно было полностью опробовать это для вас, но, учитывая поведение, как будто вы не вошли в систему, я предполагаю, что вы не ждете достаточно долго, чтобы сервервернитесь с успешной аутентификацией между нажатием кнопки «Войти» и переходом на страницу пользователя.

Я бы порекомендовал добавить Thread.Sleep(5000) после нажатия кнопки «Войти» в качестве начального исследования, чтобы подождать 5несколько секунд, чтобы завершить процесс входа в систему и посмотреть, работает ли это - если это произойдет, я бы посоветовал вам затем заменить этот поток сна, вместо этого дождаться элемента, который существует на странице, которую вы перенаправили на следующий успешный вход в систему.Таким образом, вы всегда ждете завершения процесса входа в систему, прежде чем перейти на страницу пользователя, и, возможно, поведение должно соответствовать ожидаемому

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...