Selenium--自动化测试之元素定位(二)

时间:2019-04-18
本文章向大家介绍Selenium--自动化测试之元素定位(二),主要包括Selenium--自动化测试之元素定位(二)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Selenium 八种定位方式

1.id定位–根据元素的id属性值进行定位

from selenium import Webdriver
driver= Webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.find_element_by_id("kw")
driver.send_keys("selenium")
driver.quit()

2.name定位–根据元素的name属性值进行定位

driver.find_element_by_name("wd")

3.class_name定位–根据元素的class属性值进行定位

driver.find_element_by_class_name("s_ipt")

4.tag_name定位–根据元素的标签名进行定位

driver.find_element_by_class_name("input")

5.link_text定位–根据超链接的文本进行定位–全部匹配

driver.find_element_by_link_text("新闻")

6.link_text定位–根据超链接的文本进行定位–模糊匹配

driver.find_element_by_partial_link_text("新"

7. Xpath定位—可以借助FirePath插件进行快速定位

 1 路径定位:
    绝对对路径定位-从根目录开始:/html/body/div/p[1]
    相对路径定位--从当前路径开始://input[@id='user']
 2.元素属性定位-利用元素的唯一属性快速定位
    //*[@id='user']
 3.层级属性相结合-要找的元素没有属性值,其上级目录有
   //*[@id='put']/input
 4.属性与逻辑相结合--为了避免元素之间相同属性重名
   //*[@name='pwd' and @class='pwd']
 5.扩展
   //*[text()="aa"]                           文本内容是aa的元素
   //*[starts-with(@attribute,'bb')]          属性以bb开头的元素
   //*[contains(@attribute,'cc')]             属性中含有cc的元素

8. Css定位–相比XPath定位速度要快
Css选择器具体参考:http://www.w3school.com.cn/cssref/css_selectors.asp

  1. id选择器 :driver.find_element_by_css_selector("#kw")
  2. class选择器 : driver.find_element_by_css_selector(".kw")
  3. 元素标签名选择器:driver.find_element_by_css_selector("input")
  4. 属性选择器-根据元素的属性名和值定位  :  [type="password"]
  5. 层级选择器-元素的层级关系定位 input>p
  6. 扩展
     1.input[type^='p'] 说明:type属性以p字母开头的元素
     2.input[type$='d'] 说明:type属性以d字母结束的元素
     3.input[type*='w'] 说明:type属性包含w字母的元素

BY类–调用find_element()方法,通过By来声明定位的方法,并且传入对应的方法和参数

    1. driver.find_element(By.CSS_SELECTOR, '#email').send_keys("123")
    2. driver.find_element(By.XPATH, '//*[@id="email"]').send_keys('123')
    3. driver.find_element(By.ID, "user").send_keys("123")
    4. driver.find_element(By.NAME, "pwd").send_keys("123")
    5. driver.find_element(By.CLASS_NAME, "pwd").send_keys("123")
    6. driver.find_element(By.TAG_NAME, 'input').send_keys("123")
    7. driver.find_element(By.LINK_TEXT, '百度').click()
    8. driver.find_element(By.PARTIAL_LINK_TEXT, '百').click()

注:定位一组元素

定位一组元素的第一元素
driver.find_elemets_by_XXXX(" ")[0]