1. 程式人生 > 其它 >多次登入-引數化:不關閉瀏覽器的前提下進行多次登入

多次登入-引數化:不關閉瀏覽器的前提下進行多次登入

技術標籤:python+seleniumseleniumpython

多次登入-引數化,不關閉瀏覽器,直接進行下一次的使用者登入,所以會存在cookie的想象,有些元素是cookie沒有清除,後面幾次登入都是存在的,所以再次登入會不存在這個元素,用if=1才存在cookie,後面都不需要了

涉及到一個py檔案和一個txt檔案

# coding:utf-8
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import unittest
import time

# 以只讀方式開啟user.txt檔案
user = open("C:\\Users\\Admin\\Desktop\\新建資料夾\\2.txt", encoding='utf-8')
# 讀取txt檔案所有行
lines = user.readlines()
user.close()

url = "自己的網址"  # 網址
driver = webdriver.Firefox()
driver.get(url)

time.sleep(2)
i = 0

for line in lines:
    i += 1
    # 去掉空格,直接使用下標,line[index]獲取屬性值,密碼直接試用123456
    line = line.strip('\n')

    username = lines[i-1]

    print("目前登陸的賬號;%s" % username)
    print(i)
    time.sleep(2)
    driver.find_element_by_id('showAccount').click()  # 點選使用者輸入框
    time.sleep(1)
    driver.find_element_by_id('userAccount').send_keys(username)  # 輸入使用者賬號
    time.sleep(1)
    # 目前不知道這個是什麼情況,引數化登入後,前面幾次都不需要點選密碼輸入框,最後一次需要點選
    #如果不引數化的話,直接一次登入,那就需要點選密碼框
    if i==len(lines):
        driver.find_element_by_id('showPassword').click()
    else:
        print('不是最後一個值,還可以繼續執行')
    time.sleep(1)
    driver.find_element_by_id('userPassword').send_keys(u'123456')
    time.sleep(1)
    driver.find_element_by_id('dengluBtn').click()
    time.sleep(3)
    # 驗證賬號密碼是否輸入正確
    try:
        yanzheng = driver.find_element_by_id('errorInfo').text
        print(yanzheng)
        driver.get(url)
        continue
    except NoSuchElementException as errorInfo:
        print(u'查詢元素異常%s' % errorInfo)

    # 通過frame方式定位
    driver.switch_to.frame("id_iframe")
    time.sleep(1)
    # 這個是快取引起的,如果第一次登陸成功後,瀏覽器沒有退出,cookie還是存在,後面的登入都不存在這個元素了
    if i==1:
        driver.find_element_by_xpath('//*[@id="jpwClose"]').click()
    else:
        print('不是第一個值,可以繼續執行')
    time.sleep(2)
    # 點選使用者
    driver.find_element_by_id('id_login_user').click()
    time.sleep(2)
    # 點選退出
    driver.find_element_by_id('id_a_exit').click()
    time.sleep(2)
    # 退出frame方式定位
    driver.switch_to.default_content()
    # 點選確定
    driver.find_element_by_class_name('layui-layer-btn0').click()
    time.sleep(3)
    if i==len(lines):
        driver.quit()
    else:
        print("第%s次登入"%i)