1、通过id定位元素
写法1:
element = driver.find_element_by_id("kw")
写法2:
from selenium.webdriver.common.by import By
element = driver.find_element(by=By.ID, value="kw")
Tips: by=By.ID表示以id的方式定位web元素,下面的例子有类似的写法以此类推
 
2、通过class定位元素
写法1:
cheeses = driver.find_elements_by_class_name("cheese")
Tips:注意,这里返回的是一个包含web元素的列表,下同
写法2:
from selenium.webdriver.common.by import By
cheeses = driver.find_elements(By.CLASS_NAME, "cheese")
 
3、通过name定位元素
写法1:
cheese = driver.find_element_by_name("cheese")
写法2:
from selenium.webdriver.common.by import By
cheese = driver.find_element(By.NAME, "cheese")
 
4、通过tag(html标签)定位元素
写法1:
如果iframe这个tag在本html中是唯一的,可以根据iframe这个tag名来找到该元素
frame = driver.find_element_by_tag_name("iframe")
写法2:
from selenium.webdriver.common.by import By
frame = driver.find_element(By.TAG_NAME, "iframe")
注意,通过title标签名获取title元素,打印的文本值为空:
ele2=driver.find_element_by_tag_name('title')
print(ele2.text)
 
5、获取页面中title值
Title是一个特殊的元素,标签内的文本表示页面的标题,
可以通过driver.title属性获取页面标题
 
6、通过超文本连接(link)来定位元素
写法1:
ele = driver.find_element_by_link_text("转到百度")
 
写法2:
from selenium.webdriver.common.by import By
ele = driver.find_element(By.LINK_TEXT, "转到百度")
 
7、通过partial_link定位
当全称很长时,使用模糊匹配
如百度首页,点击hao123时:
driver.find_element_by_partial_link_text('ao123').click()
 
8、css定位方法
https://www.cnblogs.com/aiyumo/p/12576150.html
9、xpath定位方法
https://www.cnblogs.com/aiyumo/p/12576380.html
总结:有时候通过上面的方法定位不到元素,只能根据上层元素去定位
注意:现在很多页面加载后(也加载javascript前端代码), 由前端代码动态改变界面的内容,比如从后端获取一些数据后,再动态改变界面的内容。尤其是很多采用了框架像   angular, react, vue这些都会这样做,这样会导致一个问题,操作后再去操作之前定位的元素,会报错,每次都要重新获取元素,使元素一直都是最新的。
 

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

  1. selenium定位元素方法汇总

    #打开网页前三步 from selenium import webdriver driver=webidriver.Chrome() driver.get("https://www.baid ...

  2. selenium+python定位元素方法

    定位元素方法 官网地址:http://selenium-python.readthedocs.org/locating-elements.html        这里有各种策略用于定位网页中的元素(l ...

  3. Web自动化基础(一)使用Selenium定位元素

    什么是元素?我们知道网页上有什么内容显示出来,比如一个按钮,一个输入框,一张图片,都可以理解成元素,这些元素是由html代码构成的,比如图片可以用<img>标签来展示,一个输入框可以用&l ...

  4. selenium 定位元素可以用多个findElement

    selenium 定位元素可以用多个findElement,如driver.findElement(By.id"XXX").findElement(By.linkText(XXX) ...

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

    Python+Selenium有以下八种定位元素的方法: 1. find_element_by_id() eg: find_element_by_id("kw") 2. find_ ...

  6. python+selenium 定位元素的主要方法

    selenium对web各元素的操作首先就要先定位元素,定位元素的方法主要有以下几种: 通过id定位元素:find_element_by_id("id_vaule") 通过name ...

  7. 总结Selenium自动化测试方法(三)WebDriver定位元素方法

    三.WebDriver定位元素 推荐使用的webdriver是firefox,因为他的firebug更能可以帮助定位页面元素使用 # create a new Firefox session cls. ...

  8. selenium定位元素的八种方法

    web driver提供了八种元素定位的方法: id, name, class name, tag name, link text, partial link text, xpath, css sel ...

  9. selenium八种定位元素方法

    1.driver.find_element_by_id('su') 定位到元素的id一般id是唯一的,可以精确定位到元素 2.driver.find_element_by_name() 通过元素的na ...

随机推荐

  1. Linux的.a、.so和.o文件 对比 window下的dll,lib,exe文件

    连续几天终于将一个又一个问题解决了,这里说其中一个问题 描述问题:使用多线程pthread的时候,(我用的IDE,CODEBOLCKS)编译后发现直接弹出窗口,程序还没有被Build..巴拉巴拉,然后 ...

  2. Zabbix使用主动模式进行监控配置方法

    一直都是在用Zabbix的被动模式(即默认模式)进行监控. 但是总有些情况是不适用被动模式的,刚好工作上有这个需求,于是捣鼓了一下,发现配置起来也挺简单的. (1)Agent配置 修改Zabbix-a ...

  3. Java中常量以及常量池

    1.举例说明 变量 常量 字面量 int a=10; float b=1.234f; String c="abc"; final long d=10L; a,b,c为变量,d为常量 ...

  4. odoo连接外部数据库

    odoo框架默认的访问时Postgres数据库,但在实际的应用场景中,不可避免的使用到其他数据库,所以有必要研究如何连接其他第三方数据库,这里分享下OCA的相关模块,具体的源代码在这里. 我将第三方的 ...

  5. PHP防止被重复请求接口的方法(网页端签名验证的方法)

    PHP防止被重复请求接口的方法(网页端签名验证的方法) 可以采取签名验证的方式来 解决这个问题 1 time和随机数都是PHP生成的显示在前端 2 前端生成sign 3 进行每次请求的sign计数 这 ...

  6. Vue(九)使用Ant Design入门——环境搭建

    安装 npm install ant-design-vue --save 然后在main.js里面引入 import ant from 'ant-design-vue' import 'ant-des ...

  7. 如何将Prometheus仪表板添加到Grafana

    Grafana是可视化的时间序列的基础设施和应用程序指标领先的图形和仪表盘构建的,但在许多其他领域,包括工业传感器,家庭自动化,天气和过程控制使用.它为您的团队和全世界提供了一种强大而优雅的方式来创建 ...

  8. Golang 传递任意类型的切片

    肯定有这样的一种场景,写一个函数,该函数可以接收任意类型的切片,完成相应的功能. 就好比这种情况 intSlice := []int{1,2,3,4,5,6,7,8} strSlice := []st ...

  9. sql特殊日期

    --a. 本月的第一天 select dateadd(mm, datediff(mm,0,getdate()), 0) as 本月的第一天 --b. 本月的最后一天 select dateadd(ms ...

  10. .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化

    原文:.NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化 最近我大幅度重构了我一个库的项目结构,使之使用最新的项目文件格式(基于 Microsoft.NET.Sdk)并使 ...