多次登入-引數化:不關閉瀏覽器的前提下進行多次登入
阿新 • • 發佈:2021-01-22
技術標籤: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)