Selenium提供了定位元素的方法find_element(),该方法被定义在WebDriver类中。


一、参数
1、两个参数,参数1根据不同定位方法确定,定位方法如下:

(1)通过id定位:使用参数By.ID定位元素的ID属性;

(2)通过元素名定位:使用参数By.NAME定位元素的NAME属性;

(3)通过标签名定位:使用参数BY.TAG_NAME定位元素的TAG_NAME属性;一般不使用该参数,使用该参数后方法会返回list,不能准确定位所找元素

(4)通过xpath定位:使用参数By.XPATH通过xpath表达式定位元素;

(5)通过css class定位:使用参数By.CLASS_NAME定位元素的class属性;

(6)通过css选择器定位:使用参数By.CSS_SELECTOR通过CSS选择器定位元素;

(7)通过链接文本定位:使用参数By.LINK_TEXT定位元素

(8)通过部分链接文本定位:使用参数By.PARTIAL_LINK_TEXT定位元素

2、参数2为上述对应属性的值

如何确定参数2:打开网页,选择任意元素,比如输入框,按钮,右键单击检查,就会有对应属性出现。以百度为例:




By.ID="kw"

By.NAME="wd"

By.TAG_NAME="input"

By.CLASS_NAME="s_ipt"

By.XPATH和By.CSS_SELECTOR可右键单击该元素,直接复制

By.LINK_TEXT和By.PARTIAL_LINK_TEXT为页面上任意链接文本,比如百度页面上的"新闻","首页"等,均可作为其值,两者区别在于,前者为链接的全部文本,后者为链接的部分文本



二、返回值

返回一个WebElement对象,这个对象代表页面上的一个元素


三、简单的代码示例

以下是一个简单的示例代码,展示如何使用find_element()方法通过各个属性定位元素

点击查看代码
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By #将各个元素定位方法封装成一个类
class TestCase:
#初始化方法
def __init__(self):
#驱动程序打开浏览器
self.driver=webdriver.Edge()
#跳转对应网页
self.driver.get("http://www.baidu.com")
#网页最大化
self.driver.maximize_window() #通过id定位元素
def test_id(self):
#网页中定位到输入框,输入关键词python
self.driver.find_element(By.ID,"kw").send_keys("python")
#定位到按钮并点击搜索
self.driver.find_element(By.ID,"su").click()
sleep(2)
quit() #通过name定位元素
def test_name(self):
self.driver.find_element(By.NAME,"wd").send_keys("selenium")
self.driver.find_element(By.ID,"su").click()
sleep(2)
quit() #通过xpath定位元素
def test_xpath(self):
self.driver.find_element(By.XPATH,"//*[@id='kw']").send_keys("selenium")
self.driver.find_element(By.XPATH,"//*[@id='su']").click()
sleep(2)
quit() #通过CSS_SELECTOR定位
def test_css_selector(self):
self.driver.find_element(By.CSS_SELECTOR,"#kw").send_keys("selenium")
self.driver.find_element(By.CSS_SELECTOR,"#su").click()
sleep(2)
quit() #通过CSS_NAME定位元素
def test_class_name(self):
self.driver.find_element(By.CLASS_NAME,"s_ipt").send_keys("selenium")
self.driver.find_element(By.ID,"su").click()
sleep(2)
quit() #通过LINK_TEXT定位元素
def test_link_text(self):
#网页中找到"贴吧"文本的链接并点击
self.driver.find_element(By.LINK_TEXT,"贴吧").click()
sleep(2)
quit() #通过PARTIAL_LINK_TEXT定位元素
def test_partial_link_text(self):
#网页中找到含有"AI"文本的链接并点击
self.driver.find_element(By.PARTIAL_LINK_TEXT,"AI").click()
sleep(2)
quit() if __name__ == "__main__":
testcase = TestCase()
#testcase.test_id()
#testcase.test_name()
#testcase.test_xpath()
#testcase.test_css_selector()
#testcase.test_class_name()
#testcase.test_link_text()
testcase.test_partial_link_text()

Selenium实现元素定位的更多相关文章

  1. 【基础】selenium中元素定位的常用方法(三)

    一.Selenium中元素定位共有八种 id name className tagName linkText partialLinkText xpath cssSelector 其中前六种都比较简单, ...

  2. [python爬虫] Selenium常见元素定位方法和操作的学习介绍(转载)

    转载地址:[python爬虫] Selenium常见元素定位方法和操作的学习介绍 一. 定位元素方法 官网地址:http://selenium-python.readthedocs.org/locat ...

  3. selenium界面元素定位

    一.        Selenium界面元素定位 本文元素定位以das2为例 #导入包 from selenium import  webdriver #打开火狐驱动 driver=webdriver ...

  4. python+selenium遇到元素定位不到的问题,顺便记录一下自己这次的错误(报错selenium.common.exceptions.NoSuchElementException)

    今天在写selenium一个发送邮件脚本时,遇到一些没有找到页面元素的错误.经过自己反复调试,找原因百度,终于解决了.简单总结一下吧,原因有以下几点: 一:Frame控件嵌套,.Frame/Ifram ...

  5. Selenium Web元素定位方法

    Selenium是用于Web应用测试的自动化测试框架,可以实现跨浏览器和跨平台的Web自动化测试.Selenium通过使用WebDriver API来控制web浏览器,每个浏览器都都有一个特定的Web ...

  6. 『心善渊』Selenium3.0基础 — 4、Selenium基础元素定位详解

    目录 1.什么是元素定位 2.Selenium元素定位常用API (1)By_id 定位 (2)by_name 定位 (3)by_class_name 定位 (4)by_tag_name 定位 (5) ...

  7. 《手把手教你》系列技巧篇(十四)-java+ selenium自动化测试-元素定位大法之By xpath上卷(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. ...

  8. 《手把手教你》系列技巧篇(十五)-java+ selenium自动化测试-元素定位大法之By xpath中卷(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. ...

  9. 《手把手教你》系列技巧篇(十六)-java+ selenium自动化测试-元素定位大法之By xpath下卷(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. ...

  10. 《手把手教你》系列技巧篇(十七)-java+ selenium自动化测试-元素定位大法之By css上卷(详细教程)

    1.简介 CSS定位方式和xpath定位方式基本相同,只是CSS定位表达式有其自己的格式.CSS定位方式拥有比xpath定位速度快,且比CSS稳定的特性.下面详细介绍CSS定位方式的使用方法.xpat ...

随机推荐

  1. Apache SeaTunnel 4月回顾:明星贡献者与技术突破

    各位热爱 SeaTunnel 的小伙伴们,SeaTunnel 社区 4 月份月报来啦!这里将记录 SeaTunnel 社区每月的重要更新,欢迎关注! 月度 Merge 之星 感谢以下小伙伴 4 月为 ...

  2. 结果集为List如何转为Map<String,List<Entity>>?

    普通写法 Map<String, List<Model>> map = new HashMap<>();// 如何获取相同的num 的对象做运算 for (Mode ...

  3. mongo变更流使用及windows下副本集五分钟搭建

    mongodb的变更流解释: 变更流(Change Streams)允许应用程序访问实时数据变更,从而避免事先手动追踪  oplog 的复杂性和风险.应用程序可使用变更流来订阅针对单个集合.数据库或整 ...

  4. Linux内核信号SIGIO使用实例讲解

    一.信号 1. 基本概念 信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的.信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上, ...

  5. 仿MFC消息机制封装对话框窗口类

    仿MFC消息机制封装对话框窗口类 这几天,又看了网上不少MFC的学习视频,学习了不少知识,对MFC消息机制有了不少的认识,于是便有了根据MFC消息机制再次封装一次对话框类, class QDialog ...

  6. python安装和使用常见问题以及解决技巧

    1. 快速切换pip版本  pip install pip==22.2 此处22.2代表版本号 , 自动加载压缩包自动切换 2. py窗口程序不能挂代理!!!!!!!!!!!!!!!!!!!!!!!! ...

  7. 【Docker学习教程系列】7-如何将本地的Docker镜像发布到阿里云

    在上一篇中,我们使用docker commit 命令,创建了一个带有vim的Ubuntu镜像.那么怎么将这个镜像分享出去呢?本文就来讲解如何将本地的docker镜像发布到阿里云上. 本文主要内容: 1 ...

  8. mysql 8.0.18 根据.ibd文件和建库SQL恢复数据

    前提:执行建库SQL,(包括建表的SQL) 1. 在mysql 的data文件夹中,找到需要恢复的DB名称,清除其文件夹下的所有文件,将待恢复的.ibd文件复制到此文件夹内 2. 执行SQL,然后查询 ...

  9. 搭建MyBatis环境

    开发环境 idea .maven .MySQL.MyBatis MySQL不同版本的注意事项 1.驱动类driver-class-name MySQL 5版本使用jdbc5驱动,驱动类使用:com.m ...

  10. 淘宝订单信息获取接口API,淘宝打单发货接口

    从事电商软件开发的小伙伴,在日常开发任务中,经常会遇到一个需求,就是将淘宝店铺的订单,同步到自己的内部订单管理系统OMS中,进行淘宝打单发货操作.我介绍下如何将订单同步下来,供各位参考.(注意:所有电 ...