Selenium-Table 封装-小练习

题目:使用css定位器获取table元素并计算1月与2月商品总计,计算错误则显示正确金额是多少,当前计算金额是多少,误差多少。

 

from selenium import webdriver
from time import sleep


#定义类
class table_css():
    #init构造函数:定义必不可少的参数
    def __init__(self, driver, tbody):
        self.driver = driver
        self.tbody = tbody

    #get_table_tr构造函数:获取tr  td类型的数据,即获取【衣服】【化妆品】【食物】行数据
    def get_table_tr(self,row,coloum):
        # #table > tbody > tr:nth-child(2) > td:nth-child(2)
        csspath = self.tbody + '> tr:nth-child(' + str(row) + ') > td:nth-child(' + str(coloum) + ')'
        return self.driver.find_element_by_css_selector(csspath).text

    # get_table_th构造函数:获取tr  td类型的数据,即获取【总计】行数据
    def get_table_th(self, row, coloum):
        # #table > tbody > tr:nth-child(5) > th:nth-child(2)
        csspath = self.tbody + ' > tr:nth-child(' + str(row) + ') > th:nth-child(' + str(coloum) + ')'
        return self.driver.find_element_by_css_selector(csspath).text


    #compare构建函数,比较计算三行的值sum和总计值total的大小
    def compare(self,sum,total):
        #输出一月计算正确,二月计算错误,计算为多少,展示为多少,误差为多少;
        if sum != total:
            return  '计算错误,计算值为:%d ,总计展示为: %d ,误差为: %d' %(sum,total,sum-total)
        else:
            return  '计算正确'

brower = webdriver.Chrome()
#请求testtable.html页面
brower.get( 'file:///C:/UI/testtable.html')
sleep(2)
# #table > tbody > tr:nth-child(2) > td:nth-child(2)
table = table_css(brower, '#table > tbody')
# print(table.get_table_tr(2,2))
# print(table.get_table_tr(3,3))
# #输出table.get_cell_text(1,1)会报错,因为第一列和第四列为th,打印的话需要重新定义
# print(table.get_table_th(1,1))
# brower.quit()

# ①计算并比较一月
Jansum = int(table.get_table_tr(2,2)) + int(table.get_table_tr(3,2)) + int(table.get_table_tr(4,2))
Jantotal = int(table.get_table_th(5,2))
print('一月' + table.compare(Jansum,Jantotal))
# ①计算并比较二月
Febsum = int(table.get_table_tr(2,3)) + int(table.get_table_tr(3,3)) + int(table.get_table_tr(4,3))
Febtotal = int(table.get_table_th(5,3))
print('二月' + table.compare(Febsum,Febtotal))

brower.quit()
 

你可能感兴趣的:(Python自动化)