1.ID定位

可以根据元素的id来定位属性,id是当前整个HTML页面中唯一的,所以可以通过id属性来唯一定位一个元素,是首选的元素定位方式。(动态ID不做考虑)

# 导入webdriver和By
from selenium import webdriver
from selenium.webdriver.common.by import By # 实例化浏览器驱动
driver = webdriver.Chrome() # 定位方式一
ele1 = driver.find_element_by_id("kw")
# 定位方式二
ele2 = (By.ID,"kw")

2.name定位

根据元素的name来定位属性,但name并不是唯一的。

# 定位方式一
ele1 = driver.find_element_by_name("wd")
# 定位方式二
ele2 = (By.NAME,"wd")

3.class name定位

根据Class定位属性,主要是用来元素进行分组,并对这一级元素设置相同的样式。所以class属性在当前html页面当中,也是不能唯一定位到一个元素的,class的属性只有一个值。

注意:find_element_by_class_name这个方法的参数只能是一个class值,列如:class属性有空格隔开两个class的值时,只能选取其中一个进行定位。

# 定位方式一
ele1 = driver.find_element_by_class_name("s_ipt")
# 定位方式二
ele2 = (By.CLASS_NAME,"s_ipt")

4.tag name定位

通过元素的标签名来定位元素,如:input标签、span标签

ele = driver.find_element_by_tag_name()

5.6.link_text和partial_link_text定位

link_text和partial_link_text是作用于链接a标签的,link_text用于全部匹配文本值,partial_link_text用于部分匹配文本值。

driver.find_element_by_link_text("抗击肺炎")
driver.find_element_by_partial_link_text("肺炎")

7.css定位

通过组合的方式进行定位,和XPATH定位方式基本相同。

ele = driver.find_element_by_css_selector(css表达式)

8.xpath定位

xpath基本定位语法:

ele = find_element_by_xpath(xpath表达式)

xpath定位分为绝对定位和相对定位

绝对定位 (/):严格按照路径、同级元素的位置来定位,缺点:页面一动,基本崩溃  以/开头  父/子

例如:/html/body/div[2]/div/form/div[1]/input  #div[2]:2表示div同级目录下的第二个div

相对定位(//):有一个参照物   不考虑路径和位置,只考虑:有还是没有!!  以//开头  //标签名[@属性名称=值]

例如:

1、//input[@name="phone"]  # 标签名为input并且name属性值为phone

2、and or 用法

//input[@name="phone" and @datatype="m"]

3、包含  //标签名[contains(@属性值,被包含的值)]

//input[contains(@class,"username") and @name="phone"]

4、文本内容定位  text()=值

//a[text()="数据分析     "]

//a[contains(text(),"数据分析")]

5、层级定位

//div[@id="u1"]//a[@name="tj_login"]

6、轴定位

轴运算:
ancestor:祖先结点 包括父
parent:父结点 给g
preceding: 当前元素节点标签之前的所有结点。(html页面先后顺序)
preceding-sibling: 当前元素节点标签之前的所有兄弟结点
following: 当前元素节点标签之后的所有结点。(html页面先后顺序)
following-sibling:当前元素节点标签之后的所有兄弟结点

使用语法:
/轴名称::节点名称[@属性=值]
例://div//table//td//preceding::td

与css定位的比较:

selenium八大元素定位方法的更多相关文章

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

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

  2. Selenium Web元素定位方法

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

  3. [python爬虫] Selenium常见元素定位方法和操作的学习介绍

    这篇文章主要Selenium+Python自动测试或爬虫中的常见定位方法.鼠标操作.键盘操作介绍,希望该篇基础性文章对你有所帮助,如果有错误或不足之处,请海涵~同时CSDN总是屏蔽这篇文章,再加上最近 ...

  4. Selenium常见元素定位方法和操作的学习介绍

    参考地址: https://www.cnblogs.com/eastmount/p/4810690.html 这篇文章主要Selenium+Python自动测试或爬虫中的常见定位方法.鼠标操作.键盘操 ...

  5. 5 Python+Selenium的元素定位方法(xpath)

    [环境] Python3.6+selenium3.0.2+FireFox50+win7 [定位方法] 1.方法:find_element_by_xpath('') 说明:xpath定位方法有相对路径和 ...

  6. 4 Python+Selenium的元素定位方法(link/partial link)

    [环境] Python3.6+selenium3.0.2+IE11+win7 [定位方法] 1.link/partial link定位方法:定位的元素为文字链接且链接很长时 方法:find_eleme ...

  7. 3 Python+Selenium的元素定位方法(id、class name、name、tag name)

    [环境] Python3.6+selenium3.0.2+IE11+Win7 [定位方法] 1.通过ID定位 方法:find_element_by_id('xx') 2.通过name定位 方法:fin ...

  8. selenium的元素定位方法-By

    如果在定位元素属性中包含了如ID等元素属性,那么在一个测试中,定位方法具体有哪几种,可以参考by模块中的By类,By的代码如下: class By(object): """ ...

  9. 6 Python+Selenium的元素定位方法(CSS)

    [环境] python3.6+selenium3.0.2+Firefox50.0+win7 [定位方法] 1.方法:find_element_by_css_selector('xx') CSS的语法比 ...

随机推荐

  1. Sentinel并发限流不精确-之责任链

    ​ 在之前调研Sentinel的过程中,为了准备分享内容,自己就简单的写了一些测试代码,不过在测试中遇到了一些问题,其中有一个问题就是Sentinel流控在并发情况下限流并不精确,当时我还在想,这个我 ...

  2. 渗透工具Burp Suite浅析

    Burp suite是一款Web安全领域的跨平台工具,基于Java开发.它集成了很多用于发现常见Web漏洞的模块,如Proxy,Spider,Scanner,Intruder,Repeater等.所有 ...

  3. Code-Review-Maven编译(第三方jar包引用)

    Code-Review-SpringBoot-Maven编译(第三方jar包引用) 在使用maven编译项目时,有时候咱们可能会使用一些第三方的jar包依赖库,比如第三方支付类的接入,大多出于安全考虑 ...

  4. spring-boot 使用hibernate validation对参数进行优雅的校验

    springboot天生支持使用hibernate validation对参数的优雅校验,如果不使用它,只能对参数挨个进行如下方式的手工校验,不仅难看,使用起来还很不方便: if(StringUtil ...

  5. Flowable学习入门

    一.Flowable简介 1.Flowable是什么 Flowable是一个使用Java编写的轻量级业务流程引擎.Flowable流程引擎可用于部署BPMN 2.0流程定义(用于定义流程的行业XML标 ...

  6. Gitlab Runner的分布式缓存实战

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  7. junit 测试用例多并发

    最近再用测试用例写个多并发,但是测试用例一运行完程序就结束啦.还没有等到多线程运行完.这个时候可以用断点在多线程后面停住或者让主线程睡眠多一些

  8. VS Code 自动化连接非固定IP地址EC2实例的解决方案

    问题描述 大家可能和我一样,平时在AWS上启动一台安装有Linux EC2实例作为远程开发机. (注:这里的EC2实例是配置用私钥进行登录的) 通常,你可以选择申请一个Elastic IP绑定到这台开 ...

  9. 【代码周边】npm是What?

    社区 程序员自古以来就有社区文化: 社区的意思是:拥有共同职业或兴趣的人们,自发组织在一起,通过分享信息和资源进行合作.虚拟社区的参与者经常会在线讨论相关话题,或访问某些网站.前端程序员也有社区,世界 ...

  10. 手写一个简单的starter组件

    spring-boot中有很多第三方包,都封装成starter组件,在maven中引用后,启动springBoot项目时会自动装配到spring ioc容器中. 思考: 为什么我们springBoot ...