如果把頁(yè)面上的元素看作人的話,在現(xiàn)實(shí)世界如何找到某人呢?方法有三:

一、通過人本身的屬性,例如他的姓名,手機(jī)號(hào),身份證號(hào),性別,這些可區(qū)別他人的屬性。在web頁(yè)面上的元素也有這些屬性,例如,id、name、class name、tag name等。

二、在找查某人的時(shí)候可以通過位置屬性,例如,x國(guó)、x市、x路、x號(hào)。Xpath和CSS就提供了這種以標(biāo)簽名為層級(jí)關(guān)系的定位方式。

三、可以借助相關(guān)他人的屬性來(lái)找到某人,例如,我沒有小明的聯(lián)系方式,但我有他爸爸的手機(jī)號(hào),那么通過他爸爸手機(jī)號(hào)也可以找到小明。Xpath和CSS同樣提供通過相關(guān)元素來(lái)查找最終元素的方式。

WebDriver提供多種元素定位方法,下面用Python語(yǔ)言來(lái)介紹這些元素定位:

1、id定位

HTML規(guī)定id屬性在HTML文檔中必須是唯一的,這類似于公民的身份證號(hào)。webdriver提供的id定位方法就是通過元素的id屬性來(lái)查找元素。例如通過id定位瀏覽器下百度輸入框與百度搜索按鈕,用法如下:

find_element_by_id("kw")      百度輸入框

find_element_by_id("su")       百度搜索

即find_element_by_id()方法通過id屬性來(lái)定位元素。

2、name定位

 HTML規(guī)定name來(lái)指定元素的名稱,就像人的姓名,所以不是唯一的。如通過name來(lái)定位百度輸入框:

find_element_by_name("wd")

即find_element_by_name()方法通過name屬性來(lái)定位元素。由于百度搜索按鈕沒有提供name屬性,故不能通過name屬性來(lái)定位它。

3、class定位

HTML規(guī)定clss來(lái)指定元素的類名。其用法與id、name類似,如通過class屬性定位百度輸入框和搜索按鈕:

find_element_by_class_name("s_ipt")

find_element_by_class_name("s_btn")

即find_element_by_class_name()方法通過class屬性來(lái)定位元素。

4、tag定位

HTML的本質(zhì)就是通過tag來(lái)定義實(shí)現(xiàn)不同的功能,每一個(gè)元素本質(zhì)上也是一個(gè)tag。因?yàn)橐粋€(gè)tag往往用來(lái)定義一類功能,所以通過tag識(shí)別某個(gè)元素概率很低。一般一個(gè)頁(yè)面有大量的<div>、<input>、<a>等tag,所以很難通過標(biāo)tag name去區(qū)分不同元素。但有時(shí)也可以用,如通過tag name定位百度的輸入框,百度按鈕與其相同:

find_element_by_tag_name("input")

即find_element_by_tag_name()方法通過元素的tag name來(lái)定位元素。

5、link定位

link用來(lái)定位文本鏈接。如百度右上角的幾個(gè)文本鏈接的代碼如下:

通過link定位鏈接如下 :

find

我想了解如何學(xué)習(xí)

姓名:
手機(jī):
留言: