Python+selenium自動化之table操作
篇文章主要說明table表格的定位。還是使用騰訊企業郵箱里的元素進行實例操作。
什么是table
Table是一個數據庫控件,主要用于在web頁面上創建表格,其功能與HtmlTable類似。不同的是,Table控件可以用動態的內容以編程的方式來生成表格。
〈table〉...〈/table〉 - 定義表格
〈th〉 - 定義表頭
〈tr〉 - 定義表行
〈td〉 - 定義表元(表格的具體數據)
企業郵箱
企業郵箱設置中的文件夾和標簽頁,系統文件夾的內容就是一個表格。
查看頁面元素,可以與上述定義做對照。
Table定位-清空【已刪除】郵件
通過查看源碼,【已刪除】處于table[@id='contenttable']表格,第六行,“清空”處于第6列,xpath路徑為"//table[@id='contenttable']//tr[6]/td[6]/a[@href='javascript:void(0)']"。
操作步驟:點擊郵箱的設置,進入iframe不然無法操作下面的元素,點擊“文件夾和標簽”頁,點擊【已刪除】列表的清空按鈕,點擊其他表格只需更換tr和td的下標即可。
源碼可復制:
TML 表格
HTML 表格實例:
HTML 表格
表格由 <table> 標簽來定義。每個表格均有若干行(由 <tr> 標簽定義),每行被分割為若干單元格(由 <td> 標簽定義)。字母 td 指表格數據(table data),即數據單元格的內容。數據單元格可以包含文本、圖片、列表、段落、表單、水平線、表格等等。
表格實例
實例
<table border="1">
<tr>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
</tr>
</table>
在瀏覽器顯示如下::
HTML 表格和邊框屬性
如果不定義邊框屬性,表格將不顯示邊框。有時這很有用,但是大多數時候,我們希望顯示邊框。
使用邊框屬性來顯示一個帶有邊框的表格:
實例
<table border="1">
<tr>
<td>Row 1, cell 1</td>
<td>Row 1, cell 2</td>
</tr>
</table>
HTML 表格表頭
表格的表頭使用 <th> 標簽進行定義。
大多數瀏覽器會把表頭顯示為粗體居中的文本:
實例
<table border="1">
<tr>
<th>Header 1</th>
<th>Header 2</th>
</tr>
<tr>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
</tr>
</table>
在瀏覽器顯示如下:
HTML 表格標簽
、系統結構:
① B/S架構:Browser/Server(瀏覽器/服務器的交互形式。)
- Browser支持的語言:HTML、CSS、JavaScript;S是服務器端Server支持的語言有:C、C++、Java等
- B/S架構系統有什么優點和缺點? 優點:升級方便,只升級服務器代碼即可,維護成本低。缺點:速度慢、體驗不好、界面不炫酷
- 企業大部分使用B/S架構
- B/S架構的系統代表有:京東、百度、天貓等
② C/S架構:Client/Server(客戶端/服務器的交互形式。)
- C/S架構的優點和缺點?
- 優點:速度快、體驗好、界面炫酷(娛樂性多數是C/S架構)
- 缺點:升級麻煩、維護成本較高。
- C/S架構的系統代表有:QQ、微信、支付寶等
2、 HTML概述
① 什么是HTML?② 怎么開發HTML?③ 怎么運行HTML?
- ① HTML:Hyper Text Markup Language(超文本標記語言)
?由大量的標簽組成,每一個標簽都有開始標簽和結束標簽。
?超文本:圖片、聲音、視頻等
- ② HTML開發使用普通的文本編輯器就行,創建擴展名是.html或.htm
?編輯器有:HBuilder、vscode等
③ 直接采用瀏覽器打開HTML文件就能運行
④ HTML是誰制定的?
?W3C制定了HTML的規范:每個瀏覽器生產廠家都會遵守規范。HTML也會按照規范去寫代碼
?HTML規范目前最高的版本是:HTML5.0,簡稱H5
?我們現在主要學的HTML4.0(基本用法)
- 為了方便中國Web前端程序員開發,提供了大量幫助文檔。為開發提供方便。
?w3school:先出現的,和W3C無關
?w3cschool:后出現的,和W3C無關
?W3C制定了很多規范:HTML/XML/http協議/https協議……
3、 第一個HTML
4、基本標簽
- p:段落標記
- h1~h6:標題字,與word的標題字相同
- br:換行標記(獨目標記)
- hr:橫線(獨目標記)
- color:橫線顏色
- width:橫線寬度(可以px和%)
- pre:預留格式
- del:刪除字
- ins:插入字(有下劃線)
- b:粗體字
- i:斜體字
- sup:上標
- sub:下標
- font:字體標簽
- color:字體顏色
- size:字體大?。?~7)
頁面效果圖:
5、實體符號:為了避免和標簽沖突,所以需要使用實體符號
- <:<
- >:>
- 空格:
- 注:html中按多個空格鍵,在網頁中只顯示一個空格。
6、HTML表格
- table:表格
- tr:行
- td:列
- th:列(比td加粗居中)
- 合并行:rowspan(一個格占兩個位置)
- 注:row合并的時候,刪除下面的單元格
- 合并列:colspan(一個格占兩個位置)
- 注:col合并的時候,刪除哪個沒有要求
7、thead、tbody、tfoot標簽
- thead、tbody、tfoot不是必須的,便于后期JS編寫。
8、body的背景顏色和背景圖片
- bgcolor:背景色
- background:背景圖片
- 背景圖片在背景色的上面
9、img標簽
- src:圖片的路徑
- 只設置width,height會等比例縮放
- 只設置height,不起作用
- title:鼠標懸停時顯示的信息
- alt:設置圖片加載失敗時顯示的提示信息
10、 超鏈接或熱鏈接
- href:hot references 熱引用;
- 后面一定是一個資源的地址。
- 后面的路徑可以是絕對路徑也可以是相對路徑,可以是網絡某個資源的路徑。
- target:
- _blank:新窗口
- _self:當前窗口(默認)
- _top:頂級窗口
- _parent:父級窗口
超鏈接的作用:
通過超鏈接可以從瀏覽器向服務器發送請求。
11、request與response的概念
- request:瀏覽器向服務器發送數據(請求)
- B --》S
- response:服務器向瀏覽器發送數據(響應)
- S--》B
12、列表
- 有序列表:ol
- type:1、A、a、I、i
- 無序列表:ul
- type:circle(○)、square(□)、disc(●)
13、表單(重點)
- action:寫提交的URL地址
- method:默認get;還有post
- 表單有什么用?
- 答:收集用戶的信息。表單展現之后,用戶填寫表單,點擊提交。 (submit)
- 怎么畫一個表單?
- 答:用form標簽
- 一個網頁可以有多個表單form
- 表單最終是需要提交數據給服務器的,form標簽有一個action屬性,這個屬性用來指定服務器地址。
- action屬性用來指定數據提交給哪個服務器
- action屬性和超鏈接中的href屬性一樣。都可以向服務器發送請求(request)
- http://192.168.111.3:8080/oa/save 這是請求路徑,
- 表單提交數據最終提交給192.168.111.3機器上的8080端口對應的軟件。
- input中的type取值:
- radio:單選控件
- checkbox:多選控件
- submit:提交控件
- reset:重置控件
- button:普通控件
- text:文本控件
- password:密碼控
- file:文件控件
- 上傳文件專用
- hidden:隱藏域
- 網頁上看不到,但是表單提交的時候數據會自動提交給服務器。
- input中的value屬性用來指定按鈕上顯示的文本信息。
- 超鏈接a與表單form的區別?
- 答:表達form可以收集信息,而超鏈接a無法收集信息。
- 表單提交里面的按鈕input中屬性必須定義name,不然提交不了。
- 表單是以什么格式提交數據給服務器的?
- 格式:action?name=value&name=value&name=value..
- HTTP協議規定的,必須以這種格式提交給服務器
- java中String split('&');
- 重點強調:表單項寫了name屬性的,一律會提交給服務器。不想提交就不要寫name屬性。
- 文本框和密碼框的value不需要程序員指定,用戶輸入什么value就是什么。
- 當name沒有寫的時候,該項不會提交給服務器
- 但是當value沒有寫的時候,value的默認值是空字符串"",將空字符串提交給服務器。java代碼得到的是:String s="";
效果圖:
地址欄提交的信息:
?username=abc&userpassowrd=1234&sex=1&aihao=study&aihao=dream&myText=我沒有value屬性;&position=ln&myFile=&myHidden=
14、表單的說明:
- ① 用戶手動輸入的文本框,都不需要給value賦值
- ② textarea沒有value屬性
- ③ radio、checkbox默認選項需要使用,checked="checked"(簡寫:checked)
- ④ select中的option屬性:? selected="selected" 為默認選中 ?size:顯示條目數量
- multiple="multiple" 支持多選(select的屬性)
- ⑤ input的屬性
- readonly和disabled:
- 都是只讀不能修改
- 數據不會提交
- maxlength:設置文本框中輸入的字符數量。
15、HTML中的結點
- 在HTML文檔中,任何元素(結點)都有id屬性,id屬性是該節點的唯一標識。所以在同一個HTML文檔中id值不能重復。
- 注意:表單提交數據的時候,只和name有關系,和id無關
- id有什么作用?
- javascript語言:可以對HTML文檔中的任何節點進行增刪改操作。
- 獲取節點時,通常通過id來獲取節點
- HTML文檔是一棵樹,樹上有很多節點,每一個節點都有唯一的id(DOM樹)
16、div和span
- div和span有什么用?
- div和span都可以稱為圖層。
- 有什么用?
- 圖層的作用為了保證頁面可以靈活的布局。
- div和span是可以定位的,只要定下div的左上角的x軸和y軸坐標即可。
- div和span的區別?
- di獨占一行
- span不會獨占一行