csv文件与txt
import csv
f = open('aaa.txt', 'r')
print(f.read())
a = open('aaa.csv', 'r')
c = csv.reader(a)
for i in c:
print(i)
Excel文件和json文件
xlrd导包需要为1.2.0
# coding=gbk
import xlrd as xlrd
ex = xlrd.open_workbook('aaa.xlsx')
sheet = ex.sheet_by_index(0)
# nrows 代表竖着的行
print(sheet.nrows)
# ncols 代表横着的列
print(sheet.ncols)
print(sheet.row_values(0))
for i in range(sheet.nrows):
print(sheet.row_values(i))
# coding=gbk
json_str = '''
[{"name":"张三","sex":"男","age": 18},{"name":"李四","sex":"女","age":130}]
'''
print(json_str)
import json
json_str2 = open('aaa.json', 'r').read()
print(json_str2)
json1 = json.loads(json_str)
# json文件里的可以用 json_str中不可以
print(json1[0]['name'])
print(json1[1]['sex'], json1[1]['age'])
# 用ascii编码表示 可以用json.dumps(json1, ensure_ascii=False)关闭
print(json.dumps(json1))
xml与yaml
xml比较麻烦 目前使用很少
# coding=gbk
import yaml
# yaml_str = "hash: { name: Steve, foo: bar }"
#
# yaml1 = yaml.load(yaml_str, Loader=yaml.FullLoader)
# print(yaml1)
yaml1 = open('aaa.yaml', 'r').read()
yaml2 = yaml.load(yaml1, Loader=yaml.FullLoader)
print(yaml2)
# coding=gbk
import time
import pytest as pytest
import xlrd
from selenium import webdriver
from selenium.webdriver import Keys
from selenium.webdriver.common.by import By
def qn(start, end, date, name, card, name1, phone):
# 打开去哪网址
a = webdriver.Chrome()
a.get('https://train.qunar.com/')
# 1秒以后运行
time.sleep(0.5)
# 出发站选择
a.find_element(By.NAME, 'fromStation').send_keys(start)
time.sleep(0.5)
# 到达选择
a.find_element(By.NAME, 'toStation').send_keys(end)
# 清空输入栏文字
a.find_element(By.NAME, 'date').send_keys(Keys.CONTROL, 'a')
a.find_element(By.NAME, 'date').send_keys(Keys.DELETE)
# 日期选择
a.find_element(By.NAME, 'date').send_keys(date)
# 搜索
a.find_element(By.NAME, 'stsSearch').click()
# 购买
time.sleep(1)
a.find_element(By.PARTIAL_LINK_TEXT, '购 买').click()
# 输入姓名、身份证、手机号
a.implicitly_wait(1)
a.find_element(By.NAME, "pName_0").send_keys(name)
a.find_element(By.NAME, 'pCertNo_0').send_keys(card)
a.find_element(By.NAME, 'contact_name').send_keys(name1)
a.find_element(By.NAME, 'contact_phone').send_keys(phone)
# 一秒后关闭浏览器
time.sleep(0.5)
a.quit()
def xlsx(filename, title=False):
xlsx = xlrd.open_workbook(filename)
s1 = xlsx.sheet_by_index(0)
date = []
for i in range(s1.nrows):
if i == 0:
if title:
continue
date.append(s1.row_values(i))
return date
s = '唐山', '大连', '2022-09-04', '张三', '130224199911237319', '张三', '17603321215'
data = xlsx('date.xlsx')
# 参数化
@pytest.mark.parametrize(['start', 'end', 'date', 'name', 'card', 'name1', 'phone'], data)
def test_qn(start, end, date, name, card, name1, phone):
qn(start, end, date, name, card, name1, phone)
if __name__ == '__main__':
pytest.main()
po模式
base层
# coding=gbk
from selenium.webdriver.chrome.webdriver import WebDriver
from selenium.webdriver.common.by import By
class BasePage:
def __init__(self, a):
self.a = a # type: WebDriver
def byname(self, elenment):
return self.a.find_element(By.NAME,elenment)
def xpath(self, elenment):
return self.a.find_element(By.XPATH,elenment)
def text(self,elenment):
return self.a.find_element(By.PARTIAL_LINK_TEXT,elenment)
def open_url(self, url):
return self.a.get(url)
def close(self):
return self.a.quit()
commo
# coding=gbk
import pytest
import xlrd
def xlsx(filename, title=False):
xlsx = xlrd.open_workbook(filename)
s1 = xlsx.sheet_by_index(0)
date = []
for i in range(s1.nrows):
if i == 0:
if title:
continue
date.append(s1.row_values(i))
return date
# coding=gbk
import time
from web自动化案例.po.BasePage.baseTestCase import BasePage
class Booklist(BasePage):
def book_buy(self):
return self.text('购 买')
def book_list(self):
self.book_buy().click()
# 购买
# 输入姓名、身份证、手机号
time.sleep(2)
# coding=gbk
import time
from selenium import webdriver
from web自动化案例.po.BasePage.baseTestCase import BasePage
from selenium.webdriver import Keys
from selenium.webdriver.common.by import By
class Bookticket(BasePage):
def book_start(self):
return self.byname("fromStation")
def book_end(self):
return self.byname('toStation')
def book_date(self):
return self.byname('date')
def move_click(self):
pass
def book_ticket(self, start, end, date):
# 打开去哪网址
# 1秒以后运行
time.sleep(0.5)
# 出发站选择
# self.a.find_element(By.NAME, 'fromStation').send_keys(start)
self.book_start().send_keys(start)
time.sleep(0.5)
# 到达选择
self.book_end().send_keys(end)
# 清空输入栏文字
self.book_date().send_keys(Keys.CONTROL, 'a')
self.book_date().send_keys(Keys.DELETE)
# 日期选择
self.book_date().send_keys(date)
# 搜索
self.a.find_element(By.NAME, 'stsSearch').click()
time.sleep(1)
# coding=gbk
import time
from web自动化案例.po.BasePage.baseTestCase import BasePage
class BookOrder(BasePage):
def book_name(self):
return self.byname('pName_0')
def book_card(self):
return self.byname('pCertNo_0')
def book_name1(self):
return self.byname('contact_name')
def book_phone(self):
return self.byname('contact_phone')
def book_order(self,name,card,name1,phone):
self.book_name().send_keys(name)
self.book_card().send_keys(card)
self.book_name1().send_keys(name1)
self.book_phone().send_keys(phone)
# 一秒后关闭浏器
time.sleep(1)
测试
# coding=gbk
import pytest
from web自动化案例.po.common.function import xlsx
from web自动化案例.po.po.book_ticket_page import Bookticket
from selenium import webdriver
from web自动化案例.po.po.book_list_page import Booklist
from web自动化案例.po.po.bool_order_page import BookOrder
data = xlsx('date.xlsx')
data1 = 'start', 'end', 'date', 'name', 'card', 'name1', 'phone'
class Test_Book():
def setup(self):
self.a = webdriver.Chrome()
url = 'https://train.qunar.com/'
self.a.get(url)
@pytest.mark.parametrize(['start', 'end', 'date', 'name', 'card', 'name1', 'phone'], data)
def test_01(self, start, end, date, name, card, name1, phone):
ticket = Bookticket(self.a)
ticket.book_ticket(start,end,date)
list = Booklist(self.a)
list.book_list()
order = BookOrder(self.a)
order.book_order(name, card, name1, phone)
def teardown(self):
self.a.quit()