当前位置:   article > 正文

Python - selenium-元素定位_pychrom selenium find elements

pychrom selenium find elements

目录

一.前序工作

二.webdriver测试

三.元素定位方式   

根据ID定位                a = wd.find_element(By.ID, '值')

根据NAME定位                 a = wd.find_element(By.NAME, '值')

根据CLASS_NAME定位            a = wd.find_element(By.CLASS_NAME, '值')  

根据TAG_NAME定位                a = wd.find_elements(By.TAG_NAME, '标签名')

超链接文本定位             a = wd.find_element(By.LINK_TEXT, '')

根据超文本部分内容定位      a = wd.find_element(By.PARTIAL_LINK_TEXT, '')

css表达式      a = find_element(By.CSS_SELECTOR, CSS Selector参数)

四.Xpath定位方式

1.绝对路径         /Element                    

2.相对路径        //Element

(1)属性定位

(2)子元素定位 

(3)父元素定位 

 (4)节点索引定位

(5)通配符定位

(6)属性关键字定位 

五.    find_element 和 find_elements 的区别:


一.前序工作

  1. 安装selenium包: cmd窗口输入命令:pip install selenium
  2. 安装浏览器 Chrome 和 浏览器驱动
  3. 安装浏览器驱动:
    --浏览器驱动的所在目录加入环境变量 Path ,创建对象时可以省略填写的路径参数
  4. 安装软件包

二.webdriver测试

  1. from selenium import webdriver    --导包
  2. from selenium.webdriver.common.by import By
  3. wd = webdriver.Chrome( )             --创建 WebDriver 对象,指明使用chrome浏览器驱动
  4. wd.get('https://www.baidu.com')   --调用WebDriver 对象的get方法 可以让浏览器打开指定网址

三.元素定位方式   

以百度此input元素为例:

  1. 根据ID定位                a = wd.find_element(By.ID, '值')

    1. # 根据id定位
    2. a = wd.find_element(By.ID, 'kw')
  2. 根据NAME定位                 a = wd.find_element(By.NAME, '值')

    1. # 根据name定位
    2. a = wd.find_element(By.NAME, 'wd')
  3. 根据CLASS_NAME定位            a = wd.find_element(By.CLASS_NAME, '值')  

    1. # 根据class_name定位
    2. a = wd.find_element(By.CLASS_NAME, 's_ipt')
  4. 根据TAG_NAME定位                a = wd.find_elements(By.TAG_NAME, '标签名')

    1. # 根据tag_name定位
    2. a = wd.find_elements(By.TAG_NAME, 'input')
  5. a = wd.find_element(By.LINK_TEXT, 'hao123')
    
  6. a = wd.find_element(By.PARTIAL_LINK_TEXT, 'hao')
    
  7. css表达式      a = find_element(By.CSS_SELECTOR, CSS Selector参数)

    根据id属性,选择元素的语法id,是在id值前面加上一个井号: #id值a 
    1. element = wd.find_element(By.CSS_SELECTOR, '#ID的值')
    2. 等价于
    3. element = wd.find_element(By.ID, 'ID的值')
    根据class属性,选择元素的语法,是在 class 值前面加上一个点: .class值a 
    1. elements = wd.find_elements(By.CSS_SELECTOR, '.CLASS的值')
    2. 等价于
    3. elements = wd.find_elements(By.CLASS_NAME, 'CLASS的值')

四.Xpath定位方式

 以百度此span元素为例:

1.绝对路径         /Element                    

  1. # 根据Xpath绝对定位
  2. a = wd.find_element(By.XPATH, '/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]')

2.相对路径        //Element

(1)属性定位

//element [@属性 = 属性值] 
//element[@属性 = 属性值  and  @属性 = 属性值]

  1. # 属性定位
  2. a = wd.find_element(By.XPATH, '//span[@class = "bg s_ipt_wr new-pmd quickdelete-wrap"]')

(2)子元素定位 

//element/子元素
//element/child::子元素

  1. # 子元素定位
  2. a = wd.find_element(By.XPATH, '//form[@id="form"]/span[1]')
  3. 等价于
  4. a = wd.find_element(By.XPATH, '//form[@id="form"]/child::span')

(3)父元素定位 

//element/..
//element/parent::子元素

  1. # 父元素定位 
  2. a = wd.find_element(By.XPATH, '//span[@class = "soutu-btn"]/..')
  3. 等价于
  4. a = wd.find_element(By.XPATH, '//span[@class = "soutu-btn"]/parent::span')

 (4)节点索引定位

//element[index]

  1. # 索引定位 
  2. a = wd.find_element(By.XPATH, '//form[@id="form"]/span[1]')

(5)通配符定位

 //* [@* = 属性值] 

  1. # 通配符定位
  2. a = wd.find_element(By.XPATH, '//*[@class = "bg s_ipt_wr new-pmd quickdelete-wrap"]')
  3. a = wd.find_element(By.XPATH, '//span[@* = "bg s_ipt_wr new-pmd quickdelete-wrap"]')
  4. a = wd.find_element(By.XPATH, '//*[@* = "bg s_ipt_wr new-pmd quickdelete-wrap"]')

(6)属性关键字定位  

//element[starts-with(@属性,"值" )]
//element[contains(@属性,"值")]
//element[contains(text( ) ="值" )]

  1. # 属性关键字定位  
  2. a = wd.find_element(By.XPATH, '')
  3. a = wd.find_element(By.XPATH, '')
  4. a = wd.find_element(By.XPATH, '')

五.    find_element 和 find_elements 的区别:

1.使用 find_elements 选择的是符合条件的 所有 元素, 如果没有符合条件的元素, 返回空列表
2.使用 find_element 选择的是符合条件的 第一个 元素, 如果没有符合条件的元素, 抛出 NoSuchElementException 异常

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/587278
推荐阅读
相关标签
  

闽ICP备14008679号