前言
做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的策略,只要人家配置了,非常規操作會被受限,怎么解決?
找運維加白名單。