Selenium 对表格table处理

在web页面中经常会遇到table表格,特别是后台操作页面比较常见

一、认识table

    1.首先看下table长什么样,如下图,这种网状表格的都是table

 

 

二、table特征

    1.table页面查看源码一般有这几个明显的标签:table、tr、th、td

    2.<table>标示一个表格

    3.<tr>标示这个表格中间的一个行

    4.</th> 定义表头单元格

    5.</td> 定义单元格标签,一组<td>标签将将建立一个单元格,<td>标签必须放在<tr>标签内

三、定位table

xpath定位table

    1.举个例子:想定位表格里面的“衣服”元素,这里可以用xpath定位:

//*[@id="table"]/tbody/tr[2]/td[1]

   2.这里定位的格式是固定的,只需改tr和td后面的数字就可以了.如第三行第二列tr[3]td[2].

使用封装对表格处理
#对表格进行处理
from selenium import webdriver
from time import sleep

#表格处理
class Table():
    def __init__(self,driver, table_selector):
        #对于driver的控制, table的定位
        self.driver = driver
        self.table = table_selector

    def get_cell_value(self, row, column):
        #//*[@id="table"]/tbody/tr[2]/td[1]
        xpath = self.table + "/tbody/tr["+ str(row) + "]/td["+ str(column) +"]"
        return self.driver.find_element_by_xpath(xpath).text


#程序入口
if __name__ == "__main__":
    #绑定Chromedriver
    driver = webdriver.Chrome()
    driver.maximize_window()
    sleep(1)
    #打开表格页面
    driver.get("file:///C:/UI/testtable.html")
    sleep(1)
    # print(driver.find_element_by_xpath('//*[@id="table"]/tbody/tr[2]/td[1]').text)
    # print(driver.find_element_by_xpath('//*[@id="table"]/tbody/tr[2]/td[2]').text)
    # print(driver.find_element_by_xpath('//*[@id="table"]/tbody/tr[2]/td[3]').text)
    # sleep(1)
    # print(driver.find_element_by_xpath('//*[@id="table"]/tbody/tr[4]/td[1]').text)
    # print(driver.find_element_by_xpath('//*[@id="table"]/tbody/tr[4]/td[2]').text)
    # print(driver.find_element_by_xpath('//*[@id="table"]/tbody/tr[4]/td[3]').text)
    table = Table(driver, '//*[@id="table"]')
    print(table.get_cell_value(2,1))
    print(table.get_cell_value(2,2))
    print(table.get_cell_value(4,2))
    driver.quit()

 

posted @ 2020-08-14 08:10  嗨不错喽  阅读(2126)  评论(0编辑  收藏  举报