-
id
-
name
-
class name
-
tag name
-
link text
-
partial link text
-
xpath
-
css selector
-
在 Python 語言中對應的定位方法如下:
-
find_element_by_id()
-
find_element_by_name()
-
find_element_by_class_name()
-
find_element_by_tag_name()
-
find_element_by_link_text()
-
find_element_by_partial_link_text()
-
find_element_by_xpath()
-
find_element_by_css_selector()
1.使用xpath定位:
1)絕對路徑:
例:find_element_by_xpath("/html/body/div/div[2]/div/div/div/from/span/input")
2)利用元素屬性定位
例:
find_element_by_xpath("//input[@class='s_ipt']")
find_element_by_xpath("//*[@class='bg s_btn']")
3)層級與屬性結合:
例:browser.find_element_by_xpath("//*[@id='main']/div[1]/ul/li[2]/a").click()
4)使用邏輯運算符:
2.css定位:
1)通過class屬性定位:
如:browser.find_element_by_css_selector(".right_more")
2)通過 id 屬性定位:
井號(#)表示通過 id 屬性來定位元素。
例:find_element_by_css_selector("#kw")
3)通過標簽名定位:
4)通過父子關系定位:
find_element_by_css_selector("input[autocomplete='off']")
find_element_by_css_selector("input[maxlength='100']")
find_element_by_css_selector("input[type='submit']")
在 CSS 當中也可以使用元素的任意屬性,只要這些屬性可以唯一的標識這個元素。
6)組合定位:
find_element_by_css_selector("span.bg s_btn_wr>input#su")
有一個父元素,它的標簽名叫 span,它有一個 class 屬性值叫 bg s_ipt_wr,它有一個子元素,標簽名 叫 input,並且這個子元素的 class 屬性值叫 s_ipt。
3.用 By 定位元素
find_element()方法只用於定位元素。它需要兩個參數,第一個參數是定位方式,這個由 By 提供;另 第二個參數是定位的值。在使用 By 時需要將 By 類導入。
find_element(By.NAME,"wd")
find_element(By.CLASS_NAME,"s_ipt")
find_element(By.TAG_NAME,"input")
find_element(By.LINK_TEXT,u"新聞")
find_element(By.PARTIAL_LINK_TEXT,u"新")
find_element(By.XPATH,"//*[@class='bg s_btn']")
find_element(By.CSS_SELECTOR,"span.bg s_btn_wr>input#su")
4.定位一組對象
1)批量操作對象,比如將頁面上所有的復選框都被勾選。
checkboxs=driver.find_elements_by_xpath("//input[@type='checkbox']")
for checkbox in checkboxs:
checkbox.click()
driver.find_elements_by_css_selector('input[type=checkbox]').pop().click()
pop(0) 默認獲取一組元素中的第一個
pop(1)