web自動化中如何使用cookie登錄


前言

  做web自動化的時候,登錄是關鍵的一步。但每次頻繁的輸入用戶名、密碼導致心態有些爆炸,所以使用cookie登錄勢在必行。下面是兩種場景的cookie登錄。

 

cookie登錄1

  這種是界面地址跳轉的情況,是大多數登錄場景。

  test_login_sg.py

from common.config import COOKIE_PATH
from po.demo import Sg
import time
from common.utils import get_driver


def account_login():
    """
    賬號密碼登錄
    """
    driver = get_driver()
    page = Sg(driver)
    page.get(page.url)
    page.phone.send_keys('***')
    page.password.send_keys('***')
    page.sure.click()
    page.shop_name.click()
    cookies = page.get_cookies()
    with open(COOKIE_PATH, 'w+') as f:
        f.write(str(cookies))
    return driver


def cookie_login():
    """
    cookie登錄
    """
    driver = get_driver()
    page = Sg(driver)
    page.get(page.url)
    with open(COOKIE_PATH, "r") as f:
        cookie_li = eval(f.read())
    page.add_cookies(cookie_li)
    page.get(page.shop_url)
    time.sleep(30)


if __name__ == '__main__':
    # account_login()
    cookie_login()

  sg_page.py

from poium import Page, Element


class Sg(Page):
    url = "https://passporttest.senguo.me/#/mobileLogin"
    shop_url = "https://cashiertest.senguo.me/m/#/boss/homeCenter/home?shopId=451"
    phone = Element(xpath='//input[@placeholder="請輸入手機號"]')
    password = Element(xpath="//input[@placeholder='請輸入密碼']")
    sure = Element(xpath="//div[text()='確認']")
    shop_name = Element(xpath="//span[text()='砬之眼']")

 

cookie登錄2

  這種情況是url不跳轉的情況,常見於登錄某網站。

  test_login_veer.py

def login_veer():
    """
    賬號密碼登錄veer
    """
    page = VeerLoginPage(driver)
    page.get(page.url)
    page.login_entrance.click()
    page.phone.send_keys('***')
    page.password.send_keys('***')
    page.login.click()
    page.picture.click()
    cookies = page.get_cookies()
    with open(COOKIE_PATH, 'w+') as f:
        f.write(str(cookies))
    return driver


def login_veer_in_cookie():
    """
    使用cookie登錄
    """
    page = VeerLoginPage(driver)
    page.get(page.url)
    with open(COOKIE_PATH, "r") as f:
        cookie_li = eval(f.read())
    page.add_cookies(cookie_li)
    page.get(page.url)
    driver.refresh()
    time.sleep(40)
    return driver

  veer_page.py

class VeerLoginPage(BasePage):
    login_entrance = Element(partial_link_text="登錄")
    phone = Element(xpath="//input[@placeholder='請輸入您的手機號/郵箱']")
    password = Element(xpath="//input[@placeholder='請輸入密碼']")
    login = Element(xpath="//button[text()='登 錄']")
    person = Element(xpath="//div[@class='wide_header right_off_canvas_toggle_menu']")
    log_out = Element(xpath="//a[text()='退出登錄']")
    success_flag = Element(xpath="//figure[@class='account']")  # 登錄完首頁成功標識
    picture = Element(xpath="//nav/a[text()='照片']")

 

后記

新功能調整后使用cookie登錄不上?

  問題在於cookie,為什么cookie有問題呢?最近新功能有上線,前后端代碼有調整,導致獲取不到cookie依賴的關鍵信息,但是開發對於這些並不自知,怎么解決?

  去子級頁面獲取cookie。

沒有新功能,以前好好的,現在登錄不上?

  服務器如阿里有反爬策略,服務區端有很多針對selenium的策略,只要人家配置了,非常規操作會被受限,怎么解決?

  找運維加白名單。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM