-
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)