• 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()
  • 相关阅读:
    Php compiler for .NET framework
    C++ Virtual Inheritance Memory Layout
    MIT公开课汉化
    OpenGL like Vulkan
    C++ Chrono Timer
    VisTools: C++模仿Java体系
    Lua IDE
    PHP调试
    Decoda
    JSRDB
  • 原文地址:https://www.cnblogs.com/nini0806/p/13500108.html
Copyright © 2020-2023  润新知