Селен навигация без выхода из системы - PullRequest
0 голосов
/ 26 мая 2018

Что я хочу сделать, так это подписаться на одну учетную запись Instagram в Chrome в режиме инкогнито.Проблема в том, что после успешного входа в систему драйвер получает ссылку на учетную запись (когда вызывается следующая функция), и я больше не вхожу в систему.

Я проделал те же операции без автоматического драйвера, и естьнет проблем.

Вот мои 2 функции:

def login(driver):
    # Auto log in to instagram
    driver.get('https://www.instagram.com/accounts/login/')
    # Wait until the screen has loaded
    try:
        element = WebDriverWait(driver, 15).until(
            EC.presence_of_all_elements_located((By.CLASS_NAME, "_ph6vk"))
            )
    except Exception:
        print("Accounts page timed out")
    input_elem = driver.find_elements_by_class_name("_ph6vk")

    input_elem[0].send_keys("username")
    input_elem[1].send_keys("password")
    login_button = driver.find_element_by_class_name("_qv64e")
    login_button.click()

def follow(driver, account_to_follow_link):

    driver.get(account_to_follow_link)

    #driver.close()

А вот мой экземпляр драйвера и его опции:

chrome_options = Options()
chrome_options.add_argument("--incognito")
#chrome_options.add_argument("--headless")
#chrome_options.add_argument("--window-size=1920x1080")


# Path of current driver & instantiation of driver object
os.chdir(r'C:\ig_automation')
driver = os.getcwd() +"\\chromedriver.exe"
driver = webdriver.Chrome(chrome_options=chrome_options, 
executable_path=driver)

Ответы [ 2 ]

0 голосов
/ 27 мая 2018

Я нашел обходной путь.Вместо того, чтобы сначала войти в Instagram, я использовал этот порядок действий:

  • открыл ссылку на учетную запись, на которую я хотел перейти
  • нажал на кнопку «Подписаться» -> он перенаправляет браузер настраница входа в систему
  • войти в систему -> автоматически перенаправляет браузер на учетную запись, за которой я хотел подписаться (без выхода из системы)
  • нажмите кнопку Follow *

Вот и все -этот обходной путь работает в моем случае, так как я просто хочу сделать одно действие, но если вы хотите сделать больше, вы должны рассмотреть другое решение

0 голосов
/ 26 мая 2018

driver.get(account_to_follow_link) заставляет селен уходить со страницы, на которую вы только что вошли, эффективно выходя из системы.Вы не можете использовать driver.get().

. Что будет более успешным, так это поиск элемента на странице, загруженной сервером после успешного входа в систему, и переключение на элемент или контекст, который уже загруженстраница.Это означает использование driver.switch_to...(), вероятно.

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