selenium3基于python语言基础操作之xpath属性定位+css属性定位


一、xpath 属性定位:

1、id:

driver.find_element_by_xpath("//*[@id='kw']").send_keys("python") # 通过xpath id定位并写入python

name:

driver.find_element_by_xpath("//*[@nam='wd']").click() # 通过name定位并点击

class:

driver.dinf_element_by_xpath("//*[@class='s_ipt']").click() # 通过class定位并点击

 

2、如果一个元素id、name、class属性都没有,这时候也可以通过其它属性定位到

例如:driver.find_slement_by_xpath("//*[@autocomplete='off']").send_keys("python")

 

3、有时候同一个属性同名比较多 这时候可以通过直接写标签input筛选

driver.find_elenment_by_xpath("//input[@name='wd']").send_keys("python")

 

 

4、通过层级关系定位

例如通过父级:driver.find_elenment_by_xpath("//span[@id='s_kw_wrap']/input").click()

span[@id='s_kw_wrap']是父级的元素,/input 是本级元素

例如通过父级上层:driver.find_elenment_by_xpath("//from[@id='from']/span/input").click()

//from[@id='from']是父级的上层 ,/span 是父级 /input是本级

 

5、元素标签相同情况下通过父级下 先后顺序来定位

用xpath定位:

driver.find_element_by_xpath("//selent[@id='nr']/option[1]").click()

//selent[@id='nr']是父级 /option[1]是老大

driver.find_element_by_xpath("//selent[@id='nr']/option[2]").click()

//selent[@id='nr']是父级 /option[1]是老二

driver.find_element_by_xpath("//selent[@id='nr']/option[3]").click()

//selent[@id='nr']是父级 /option[1]是老三

 

6、xpath逻辑运算 支持可以支持与(and)、或(or)、非(not)

一般用的比较多的是and运算,同时满足两个属性

例如:driver.find_element_by_xpath("//*[@id='kw' and @authocomplete='off']").click()

 

7、xpath模糊匹配

driver.find_element_by_xpath("//*[contains(text(), 'hao123')]").click()

定位超链接 hao123

 

driver.find_element_by_xpath("//*[contains(@id, 'kw']").click()

模糊匹配某个属性

 

模糊匹配以什么开通、starts-with

模糊匹配以什么结尾、ends-with

正则表达式、matchs

 

二、css 属性定位

  1. css通过定位id #符号表示 driver.find_element_by_css_selector("#kw").send_keys("python")

css通过定位class .符号表示 driver.find_element_by_css_selector(".s_ipt").click()

css通过定位标签 无符号表示 driver.find_element_by_css_selector("input").click()

css通过定位name 无符号表示 driver.find_element_by_css_selector("[name='kw']").click()

css通过定位type 无符号表示 driver.find_element_by_css_selector("[type='kw']").click()

  1. css通过标签与属性的组合来定位元素

driver.find_element_by_css_selector("input#kw").click() 通过标签与id属性组合

driver.find_element_by_css_selector("input.s_ipt").click() 通过标签与class属性组合

driver.find_element_by_css_selector("input[id='s_ipt']").click() 通过标签与其他属性组合

  1. css层级关系

driver.find_element_by_css_selector("from#from>span>input").click()

rom#from父级的上一级和id、 span父级、input本级

 

driver.find_element_by_css_selector("from.fm>span>input").click()

rom#from父级的上一级和class、 span父级、input本级

 

  1. css索引 第几位

driver.find_element_by_css_selector("select#nr>option:nth-child(1)").click()

option:nth-child 定位获取第几个元素语法后面跟(1)(2)(3)

 

  1. css逻辑运算 同时匹配两个属性,这里跟xpath不一样,无需写and关键字

driver.find_element_by_css_selector("input[id='kw'][name='wd']").send_keys("python")

 

ss定位更快,语法更简洁,但是xpath更直观,更好理解一些。