Python - selenium-元素定位

目录

一.前序工作

二.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, '标签名')

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测试

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

三.元素定位方式   

以百度此input元素为例:

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

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

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

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

    # 根据tag_name定位
    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 
    element = wd.find_element(By.CSS_SELECTOR, '#ID的值')
    等价于
    element = wd.find_element(By.ID, 'ID的值')
    根据class属性,选择元素的语法,是在 class 值前面加上一个点: .class值a 
    elements = wd.find_elements(By.CSS_SELECTOR, '.CLASS的值')
    等价于
    elements = wd.find_elements(By.CLASS_NAME, 'CLASS的值')

四.Xpath定位方式

 以百度此span元素为例:

1.绝对路径         /Element                    

# 根据Xpath绝对定位
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  @属性 = 属性值]

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

(2)子元素定位 

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

# 子元素定位
a = wd.find_element(By.XPATH, '//form[@id="form"]/span[1]')

等价于

a = wd.find_element(By.XPATH, '//form[@id="form"]/child::span')

(3)父元素定位 

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

# 父元素定位 
a = wd.find_element(By.XPATH, '//span[@class = "soutu-btn"]/..')

等价于

a = wd.find_element(By.XPATH, '//span[@class = "soutu-btn"]/parent::span')

 (4)节点索引定位

//element[index]

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

(5)通配符定位

 //* [@* = 属性值] 

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

a = wd.find_element(By.XPATH, '//span[@* = "bg s_ipt_wr new-pmd quickdelete-wrap"]')

a = wd.find_element(By.XPATH, '//*[@* = "bg s_ipt_wr new-pmd quickdelete-wrap"]')

(6)属性关键字定位  

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

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

a = wd.find_element(By.XPATH, '')

a = wd.find_element(By.XPATH, '')

五.    find_element 和 find_elements 的区别:

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

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
XPath是一种XML文档的定位方法,也可以用于HTML文档的定位Selenium中也可以使用XPath来定位网页元素。下面是使用XPath定位元素的详细步骤: 1. 打开浏览器并访问网页: ```python from selenium import webdriver driver = webdriver.Chrome() driver.get("http://www.example.com") ``` 2. 使用XPath定位元素: ```python # 通过元素id定位 element = driver.find_element_by_xpath('//*[@id="element_id"]') # 通过元素name定位 element = driver.find_element_by_xpath('//*[@name="element_name"]') # 通过元素class定位 element = driver.find_element_by_xpath('//*[@class="element_class"]') # 通过元素标签名定位 element = driver.find_element_by_xpath('//tag_name') # 通过元素属性定位 element = driver.find_element_by_xpath('//*[@attribute_name="attribute_value"]') # 通过元素文本内容定位 element = driver.find_element_by_xpath('//*[text()="text_content"]') # 通过元素部分文本内容定位 element = driver.find_element_by_xpath('//*[contains(text(), "text_content")]') ``` 3. 对元素进行操作: ```python # 输入文本 element.send_keys("text_input") # 点击元素 element.click() # 获取元素文本 print(element.text) # 获取元素属性值 print(element.get_attribute("attribute_name")) ``` 注意事项: - XPath定位需要用到浏览器的开发者工具,在开发者工具中可以查看元素的XPath路径。 - XPath路径中的引号需要用不同类型的引号包裹,例如在单引号内使用双引号包裹。 - 如果XPath路径中包含斜杠(/),则需要使用双斜杠(//)或者使用单引号包裹整个XPath路径。 - 在XPath路径中没有找到元素时,会抛出NoSuchElementException异常。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值