Web自动化实战

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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值