13、Selenium + Python 实现 UI 自动化测试-操作表格

一、看下表格元素

一个table 对应一个表格,一个tr 对应一行,tr下面的td对应单元格

13、Selenium + Python 实现 UI 自动化测试-操作表格


二、如果只是想取某个单元格中的值,像定位普通元素一样定位单元格即可

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('http://sahitest.com/demo/tableTest.htm')
ele = driver.find_element_by_xpath('/html/body/table[1]/tbody/tr[1]/td[1]')
print(ele.text)

driver.quit()


三、假如想打印表格所有值呢?

思路:
1、先定位页面中表格对象元素
2、在该表格中,通过tag name = ‘tr’ 找所有行
3、在第一行中,通过tag name = ‘td’ 找所有列

现在,有木有觉得find_elements_by_tag_name 很有用!

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('http://sahitest.com/demo/tableTest.htm')
table = driver.find_element_by_xpath('/html/body/table[1]')
rows = table.find_elements_by_tag_name('tr')
cols = rows[0].find_elements_by_tag_name('td')

for i in range(len(rows)):
    for j in range(len(cols)):
        cell = rows[i].find_elements_by_tag_name('td')[j]
        print(cell.text)

driver.quit()


四、总结

1、操作表格这类有规律的元素,使用 tag name。

2、通过xpath,可以取到行数,和某行对应的列数,但是循环取单元格不好实现

rows1 = driver.find_elements_by_xpath('/html/body/table[1]/tbody/tr')
cols1 = driver.find_elements_by_xpath('/html/body/table[1]/tbody/tr[1]/td')
3、操作表格当中某个单元格本身和操作某一元素并无不同,你可以使用id、name、xpath等方式去定位;只不过这些单元格组合在一起成了一个表格,这些单元格在表格中是按照一定规律存放的。