UI自动化必不可少的操作——元素定位

  • 8大基础定位
driver.find_element_by_id()   # id定位
driver.find_element_by_name()  # name定位
driver.find_element_by_class_name()  # class名称定位
driver.find_element_by_tag_name()  # 标签定位
driver.find_element_by_xpath()  # xpath定位
driver.find_element_by_css_selector()  # css定位
driver.find_element_by_link_text()  # a标签的文本定位
driver.find_element_by_partial_link_text()  # a标签的局部文本定位

 

  •  xpath定位

  //*[]:// 相对定位      * 匹配任意标签

  第一种:id\class\name\其他属性,精确匹配

driver.find_element_by_xpath("//*[@id='']")           # id与id的值
driver.find_element_by_xpath("//*[@class='']")        # class和class的值
driver.find_element_by_xpath("//*[@name='']")     # naem和值
driver.find_element_by_xpath("//*[@shuxingming='']") # 属性名和值

  第二种:模糊匹配\层级\索引\逻辑运算

  模糊匹配:

driver.find_element_by_xpath("//*[contains(text(),'测试')]")     # 包含某些字符
driver.find_element_by_xpath("//*[starts-with(text(),'测试')]")    # 以某些字符开头
driver.find_element_by_xpath("//*[ends-with(text(),'测试')]")      # 以某些字符结尾
driver.find_element_by_xpath("//*[matchs(text(),'测试')]")        # 正则匹配

  层级:

driver.find_element_by_xpath("//*[@id='']/p")

  索引:

driver.find_element_by_xpath("//*[@id='']/option[0]")

  第三种:绝对定位

  html/body/heard/div/divdiv/ul/li[2]/a      不推荐

  •  css定位

  第一种:id\class\标签名

#:id

.class

driver.find_element_by_css_selector("#username")     #id为username
driver.find_element_by_css_selector(".username")     #class为username
driver.find_element_by_css_selector("iframe")         #标签名为iframe

 第二种:

索引:
driver.find_element_by_css_selector("selet#nr>option:nth-child(1)") #标签名:nth-child(1)来定位子元素
层级:
driver.find_element_by_css_selector("selet#nr>option") #标签名:nth-child(1)来定位子元素
逻辑运算:
driver.find_element_by_css_selector("input#nr[id=''][class='']") #不用and连接,写在一起即可
  • 定位多组元素

 使用 find_elements ,结果为列表,使用下标索引方式取值

names=driver.find_elements_by_name("username")
print names[1]

  

 

 

 

做一棵小草,谁也撼动不了………

如果您觉得本篇文章还不错,欢迎点赞,转发分享,感谢(*^_^*)

posted on 2020-09-17 15:13  小草小草随风飘摇  阅读(199)  评论(0编辑  收藏  举报