Selenium导航而不会被注销

时间:2018-05-26 16:20:31

标签: python selenium selenium-webdriver selenium-chromedriver

我想要做的是在Chrome中隐藏一个Instagram帐户,隐身模式。问题是,在我成功登录后,驱动程序获取了帐户的链接(当调用跟随函数时),我不再登录。

我在没有自动驱动程序的情况下进行了相同的操作,没有问题。

以下是我的两个功能:

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)

3 个答案:

答案 0 :(得分:0)

driver.get(account_to_follow_link)导致selenium离开您刚登录的页面,有效地将您退出。您无法使用driver.get()

更成功的是在登录成功后找到服务器加载的页面上的元素,并切换到页面已加载的元素或上下文。这意味着可能使用driver.switch_to...()

答案 1 :(得分:0)

我想出了一个解决方法。我没有先登录Instagram,而是使用了这个动作指令:

  • 打开了我想要关注的帐户的链接
  • 点击了关注按钮 - >它将浏览器重定向到登录页面
  • 登录 - >自动将浏览器重定向到我想要关注的帐户(无需注销)
  • 点击关注按钮

就是这样 - 这个解决方法适用于我的情况,因为我只想做一个动作,但如果你想做更多,你应该考虑另一个解决方案

答案 2 :(得分:0)

如果我从相同的作用域,相同的方法或在相同的对象内发出更多的get请求,Selenium不会注销我(如果您创建实现驱动程序的类)。这将保留驱动程序cookie。您可以使用在全局范围内声明的驱动程序来创建类,也可以传递driver.get_cookies()来保留站点cookie并保持登录状态。

未确认:
只需在python程序的全局范围内声明驱动程序即可完成此操作。