1. 程式人生 > 實用技巧 >Python+Selenium+Mysql(動態獲取資料,資料庫互動)

Python+Selenium+Mysql(動態獲取資料,資料庫互動)

一、建立資料庫連線

!coding:utf-8

import pymysql
'''
Python3之後不再支援MySQLdb的方式進行訪問mysql資料庫;
可以採用pymysql的方式

連線方式:
1、導包
import pymysql
2、開啟資料庫連線
conn = pymysql.connect(host='10...*',user='root',password='123456',db='self_dev',charset='utf8',cursorclass=pymysql.cursors.DictCursor)
備註:其中cursorclass=pymysql.cursors.DictCursor 可有可無,配置的是每個欄位的展示方式,按照字典的形式進行展示(方便通過列名進行訪問),預設元組形式。
3、使用cursor()方法獲取操作遊標
cur = connection.cursor()
4、SQL 查詢語句
sql = "SELECT * FROM table t where t.name='政協'"
5、執行SQL語句
cur.execute(sql)
6、獲取所有記錄列表
rows = cur.fetchall()
7、輸出

8、關閉資料庫連線
    connection.close()

'''
class dbClection:
connection = pymysql.connect(host='10...*',
user='root',
password='123456',
db='self_dev',
charset='utf8',
cursorclass=pymysql.cursors.DictCursor)
def getOrgid(self):
cur = self.connection.cursor()

    sql = "SELECT t.id FROM org t where t.name='自動化新增(行政區域)' and t.status='1'"
    try:
        cur.execute(sql)
        results = cur.fetchall()

        for row in results:
            org_id = row['id']
            return org_id
            #print(org_id)
    except:
        print('Error:unable to fetch data')

    self.connection.close()

'''
if name == 'main':
db = dbClection()
res = db.getOrgid()
print(res)
'''

二、引用上述建立的dbClection下的getOrgid()方法

!coding:utf-8

from selenium import webdriver
from time import sleep
import unittest
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import Select
from mySql import dbClection----------主體省略----------------

def test_add_fenwei(self):
u'''登入'''
username = 'org-admin'
password = '123456'
self.login(username,password)
sleep(2)
#進入組織管理介面
self.dr.get(self.org_url)
sleep(2)
db = dbClection()
xzjd_org = db.getOrgid()
# print(xzjd_org)
self.by_xpath('//*[@id="%s"]/i'%xzjd_org).click()
sleep(2)
self.dr.find_element_by_partial_link_text('自動化新增(地域)').click()
sleep(2)
self.by_id('addDept').click()
sleep(3)
self.by_id('orgName_add').send_keys('自動化新增(分類)')
sleep(2)
Select(self.by_id("govDeptType_add")).select_by_visible_text("分類")
sleep(2)
self.by_id('saveDeptAdd').click()

  備註:變數在使用在頁面定位中時,需要進行%格式化,否則無法傳入。      例如:  db = dbClection()
xzjd_org = db.getOrgid()
# print(xzjd_org)
self.by_xpath('//*[@id="%s"]/i'%xzjd_org).click()