Selenium八大元素定位

一、Selenium八大元素定位新方法

尽管Selenium定位元素的八大方法已经较为完善,但是每种定位方式都有其优缺点,使用时需要根据实际情况选择。同时,Selenium也经常会推出新的元素定位方法,如Selenium 4.0中新增了Relative定位方法。

from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select

# Relative定位方法
article = driver.find_element(By.CSS_SELECTOR, 'article:nth-child(1)')
title = article.find_element(By.CSS_SELECTOR, 'h2')

二、Selenium元素定位方法

Selenium提供了八种元素定位方法,它们分别是:

  • ID
  • Name
  • Class Name
  • Tag Name
  • Link Text
  • Partial Link Text
  • XPath
  • CSS Selector
# 以ID定位为例
from selenium.webdriver.common.by import By
element = driver.find_element(By.ID, 'element-id') 

三、Selenium八大定位方法

下面,我们将会对Selenium八大定位方法逐一进行介绍:

  • 1. ID定位
  • ID定位是一种最基本的定位方法,通过元素ID查找元素。

    from selenium.webdriver.common.by import By
      element = driver.find_element(By.ID, 'element-id')
  • 2. Name定位
  • Name定位是通过元素名称查找元素。

    from selenium.webdriver.common.by import By
      element = driver.find_element(By.NAME, 'element-name')
  • 3. Class Name定位
  • Class Name定位是通过元素class属性查找元素。

    from selenium.webdriver.common.by import By
      elements = driver.find_elements(By.CLASS_NAME, 'element-class')
  • 4. Tag Name定位
  • Tag Name定位是通过HTML标签名查找元素,可以查找到同类元素的集合。

    from selenium.webdriver.common.by import By
      elements = driver.find_elements(By.TAG_NAME, 'element-tag')
  • 5. Link Text定位
  • Link Text定位是通过链接文本查找链接元素。

    from selenium.webdriver.common.by import By
      element = driver.find_element(By.LINK_TEXT, 'element-link-text')
  • 6. Partial Link Text定位
  • Partial Link Text定位是通过链接部分文本查找链接元素。

    from selenium.webdriver.common.by import By
      element = driver.find_element(By.PARTIAL_LINK_TEXT, 'partial-link-text')
  • 7. XPath定位
  • XPath定位是通过XPath表达式查找元素,XPath是一种XML路径语言。

    from selenium.webdriver.common.by import By
      element = driver.find_element(By.XPATH, 'element-xpath')
  • 8. CSS Selector定位
  • CSS Selector定位是通过CSS选择器查找元素。

    from selenium.webdriver.common.by import By
      element = driver.find_element(By.CSS_SELECTOR, 'element-css-selector')

四、Selenium定位隐藏元素

有些网页中的元素可能被隐藏或者用了一些特殊的样式,可以使用JavaScript或者CSS样式覆盖来使其显示出来,例如:

element = driver.execute_script("return document.querySelector('#id').innerHTML")

五、Selenium元素定位有哪些

使用Selenium可以定位到以下类型的元素:

  • 文本框/输入框
  • 按钮
  • 单选框/多选框
  • 下拉框
  • 超链接
  • 图片
  • 表格
  • iframe/frameset

六、Selenium动态元素定位方法

如果页面中的元素是动态的,即其位置或者属性值不断变化,可以使用Selenium动态元素定位方法,如:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'element-id'))) 

七、Selenium定位元素的方法

以下是一些常用的Selenium定位元素的方法:

  • 1. find_element():查找单个元素
  • element = driver.find_element(By.ID, 'element-id')
  • 2. find_elements():查找多个同类型元素
  • elements = driver.find_elements(By.TAG_NAME, 'element-tag')
  • 3. find_element_by_xpath():通过XPath表达式查找元素
  • element = driver.find_element_by_xpath('element-xpath')
  • 4. find_element_by_css_selector():通过CSS选择器查找元素
  • element = driver.find_element_by_css_selector('element-css-selector')
  • 5. wait_until():等待元素出现
  • from selenium.webdriver.support.ui import WebDriverWait
      from selenium.webdriver.support import expected_conditions as EC
      from selenium.webdriver.common.by import By
      
      element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'element-id'))) 
  • 6. move_to_element():鼠标悬停在元素上
  • from selenium.webdriver.common.action_chains import ActionChains
    
      element = driver.find_element(By.ID, 'element-id')
      ActionChains(driver).move_to_element(element).perform()
  • 7. send_keys():输入文字
  • element = driver.find_element(By.ID, 'element-id')
      element.send_keys('input-text')
  • 8. click():鼠标单击操作
  • element = driver.find_element(By.ID, 'element-id')
      element.click()

八、不属于Selenium八大定位方式

以下是一些不属于Selenium八大定位方式的方式:

  • 1. By.JS定位
  • 使用JavaScript代码定位元素。

    element = driver.execute_script("return document.querySelector('#id')")
  • 2. By.LINK_TEXT_PARTIAL匹配定位
  • 使用Link Text字符串的部分文本进行匹配定位。

    elements = driver.find_elements(By.XPATH, "//*[contains(text(),'partial-link-text')]")
  • 3. By.XPATH子元素定位
  • 通过父节点和子节点的关系查找元素。

    element = driver.find_element(By.XPATH, '//form/div/input')

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/238901.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 12:13
下一篇 2024-12-12 12:13

相关推荐

  • Python遍历集合中的元素

    本文将从多个方面详细阐述Python遍历集合中的元素方法。 一、for循环遍历集合 Python中,使用for循环可以遍历集合中的每个元素,代码如下: my_set = {1, 2…

    编程 2025-04-29
  • Python列表中大于某数的元素处理方法

    本文将会介绍如何在Python列表中找到大于某数的元素,并对其进行进一步的处理。 一、查找大于某数的元素 要查找Python列表中大于某数的元素,可以使用列表推导式进行处理。 nu…

    编程 2025-04-29
  • 使用Selenium爬虫实现数据采集

    本文将详细阐述如何使用Selenium爬虫实现数据采集,包括Selenium的基本用法,Selenium + Beautiful Soup库的用法以及常见问题的解决方案。如果您是初…

    编程 2025-04-29
  • Python Set元素用法介绍

    Set是Python编程语言中拥有一系列独特属性及特点的数据类型之一。它可以存储无序且唯一的数据元素,这使得Set在数据处理中非常有用。Set能够进行交、并、差集等操作,也可以用于…

    编程 2025-04-29
  • Python编程实现列表元素逆序存放

    本文将从以下几个方面对Python编程实现列表元素逆序存放做详细阐述: 一、实现思路 一般来说,使用Python将列表元素逆序存放可以通过以下几个步骤实现: 1. 定义一个列表 2…

    编程 2025-04-29
  • Python集合加入元素

    Python中的集合是一种无序且元素唯一的集合类型。集合中的元素可以是数字、字符串、甚至是其他集合类型。在本文中,我们将从多个方面来探讨如何向Python集合中加入元素。 一、使用…

    编程 2025-04-29
  • Java创建一个有10万个元素的数组

    本文将从以下方面对Java创建一个有10万个元素的数组进行详细阐述: 一、基本介绍 Java是一种面向对象的编程语言,其强大的数组功能可以支持创建大规模的多维数组以及各种复杂的数据…

    编程 2025-04-28
  • 如何在谷歌中定位系统弹框元素

    本文将从以下几个方面为大家介绍如何在谷歌中准确地定位系统弹框元素。 一、利用开发者工具 在使用谷歌浏览器时,我们可以通过它自带的开发者工具来定位系统弹框元素。 首先,我们可以按下F…

    编程 2025-04-28
  • Python三种基本输入元素

    本文将从多个方面对于Python三种基本输入元素进行详细的阐述并给出代码示例。 一、Python三种基本输入元素解答 Python三种基本输入元素包括命令行参数、标准输入和文件输入…

    编程 2025-04-28
  • Python元组元素分成单个整数

    本文将介绍如何将Python元组中的元素分成单个整数,并提供多种实现方式。 一、使用for循环遍历元组实现 可以通过for循环遍历元组的每一个元素,再将其转换成整数,并存储在新的列…

    编程 2025-04-28

发表回复

登录后才能评论