selenium模組化和資料驅動
阿新 • • 發佈:2018-11-20
模組化:
登入模組檔名:publiclogin.py
# coding=utf-8 #登入模組 def login(dr): dr.find_element_by_id('login-username').send_keys('username') dr.find_element_by_id('login-passwd').send_keys('password')
# coding=utf-8 from selenium import webdriver from publiclogin import login #呼叫publiclogin檔案dr = webdriver.Firefox() dr.get("https://passport.bilibili.com/login") login(dr) #呼叫登入模組,傳入驅動引數 #其他測試內容
讀取TXT檔案
讀取行資料:
讀取整個檔案:read()
讀取一行資料:readline()
讀取所有行資料:readlines()
txt檔案如下:
用open開啟檔案之後,要用close關閉檔案
# coding=utf-8 from selenium import webdriver from time import sleep frompubliclogin import login #呼叫publiclogin檔案 search = open("searchfile.txt","r") #開啟檔案,只讀 values = search.readlines() #逐行讀取 search.close() #用open開啟檔案之後,要用close關閉檔案 for searchword in values: dr = webdriver.Firefox() dr.get("https://baidu.com") dr.find_element_by_id('kw').send_keys(searchword) dr.find_element_by_id('su').click() sleep(1) dr.quit()
對TXT檔案的一行資料進行拆分:
# coding=utf-8 from selenium import webdriver from time import sleep from publiclogin import login #呼叫publiclogin檔案 search = open("searchfile.txt","r") #開啟檔案,只讀 values = search.readlines() #逐一讀取所有行 search.close() for searchword in values: username=searchword.split(',')[0] #按逗號分隔,並取第一個陣列 print username password=searchword.split(',')[1] #按逗號分隔,並取第二個陣列 print password
讀取CSV檔案
建立一個excel檔案,並另存為CSV格式
import csv #讀取data目錄內的CSV檔案 cust_info = csv.reader(open('./data/custinfo.csv','r')) for customer in cust_info: print customer
讀取XML檔案
xml檔案如下:
<?xml version="1.0" encoding="utf-8"?> <catalog> <maxid>10</maxid> <login username='Python' passwd='12345678'> <caption>python</caption> <item id='4'> <caption>test</caption> </item> </login> <item id='2'> <caption>test2</caption> </item> </catalog>
讀取標籤內的資料:
# coding=utf-8 import xml.dom.minidom #引入xml檔案 dom = xml.dom.minidom.parse('C:/Users/user/Desktop/python_study/script/data/userlogin.xml') root = dom.documentElement logins = root.getElementsByTagName('login') #注意elements有s username = logins[0].getAttribute('username') #logins[0]表示第一個login標籤,getattribute獲取username屬性 print username password = logins[0].getAttribute('passwd') print password
讀取標籤對件的資料:
import xml.dom.minidom #讀取當前目錄下data資料夾內的XML檔案 dom = xml.dom.minidom.parse('userlogin.xml') root = dom.documentElement captions = root.getElementsByTagName('caption') #注意elements有s c1=captions[0].firstChild.data #獲取第一個caption標籤對間的資料 print c1 c2=captions[1].firstChild.data #獲取第二個caption標籤對間的資料 print c2
模組化和資料驅動綜合案例:
# coding=utf-8 from selenium import webdriverimport sys #跨目錄獲取檔案 sys.path.append('./public') from public import publiclogin dr = webdriver.Firefox() dr.get("https://passport.bilibili.com/login") publiclogin.login(dr) #呼叫登入模組,指定檔案,傳入驅動引數
#其他功能測試
dr.quit()
Python讀取檔案順序為當前目錄—>python安裝目錄—>環境變數
publiclogin檔案存放在public資料夾內,不是當前目錄,也不再安裝目錄下,不能直接獲取到
如果每次都要新增環境比較麻煩,為方便使用,可以呼叫import sys
public檔案內需要有__init__.py檔案,不然無法識別該資料夾內的檔案
__init__.py檔案檔案為空時,寫法如上;如果在__init__.py檔案內import publiclogin,可寫為 from public import *
登入模組:
# coding=utf-8 import xml.dom.minidom #引入xml檔案 dom = xml.dom.minidom.parse('C:/Users/user/Desktop/python_study/script/data/userlogin.xml') root = dom.documentElement logins = root.getElementsByTagName('login') #注意elements有s username = logins[0].getAttribute('username') #獲取username password = logins[0].getAttribute('passwd') #獲取password#登入模組 def login(dr): dr.find_element_by_id('login-username').send_keys(username) #傳入username dr.find_element_by_id('login-passwd').send_keys(password) #傳入password
xml檔案資料:
<?xml version="1.0" encoding="utf-8"?> <catalog> <maxid>10</maxid> <login username='testusername' passwd='testpassword'> <caption>python</caption> <item id='4'> <caption>test</caption> </item> </login> <item id='2'> <caption>test2</caption> </item> </catalog>