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. js---if判断的几种写法

    在写JS中最常见的就是 if 判断,但是直接写 if(){}else{}; 太low ,下面是常见的几种js的if判断的写法: /** * js 判断的几种写法 */ var a = 10,b = 2 ...

  2. 审阅模式中word保存不了

    word保存不了 觉得有用的话,欢迎一起讨论相互学习~Follow Me 昨天写论文出现一个怪事,发现自己word内容按ctrl+S 进行保存时可以的,但是当按X进行关闭时,出现 关闭不了,问我是否需 ...

  3. 在条件判断中使用 all() / any()

    在条件判断中使用 all() / any() all() 和 any() 两个函数非常适合在条件判断中使用.这两个函数接受一个可迭代对象,返回一个布尔值,其中: all(seq):仅当 seq 中所有 ...

  4. OpenShift 4.2环境离线部署Operatorhub

    缺省离线环境安装的ocp4的Operatorhub是没有内容的.详细离线文档参考官网文档 https://docs.openshift.com/container-platform/4.2/opera ...

  5. EasyNVR摄像机网页无插件直播方案H5前端构建之:bootstrap弹窗功能的实现方案与代码

    前言介绍 在web前端的网页设计中,为了展示出简洁的网页风格和美观的效果,往往会使用弹窗效果在EasyNVR前端页面录像检索功能时,必然会播放录像,如果单独为播放录像文件排一个界面,用户在使用上会更加 ...

  6. Windows SVN迁移到Linux 服务器

    一.备份VisualSVN项目 1. 现在要使用Linux作为svn服务器,之前是在windows Server 2008上的,用的是VisualSVN, 如下图所示. 2. 现在svn中有一个项目f ...

  7. React 使用 if else 判断语句

    今天在写 React 时,在 render 的return中既然不能使用if判断语句,所以就整理一些在react中使用if 的方式,可根据自己的实际情况选择: 方式一: class LLL exten ...

  8. PowerDNS + PowerDNS-Admin

    一.基础配置 1.1 环境说明 Centos 7.5.1804 PDNS MariaDB 1.2 关闭防火墙和 selinux setenforce sed -i 's/SELINUX=enforci ...

  9. 使用SSM搭建一个简单的crud项目

    使用SSM完成增删查改 前端使用到的技术:ajax,json,bootstrap等 完整项目地址:点这里GitHub 项目地址,可以在线访问 这一章节主要搭建SSM的环境. SpringMVC Spr ...

  10. Django框架之DRF APIView Serializer

    一.APIView 我们在使用DjangoRestfulFramework的时候会将每个视图类继承APIView,取代原生Django的View类 APIView的流程分析: rest_framewo ...