Python+Selenium 利用ID,XPath,tag name,link text,partial link text,class name,css,name定位元素
使用firefox浏览器,查看页面元素,我们以“百度网页”为示例
一、ID定位元素 利用find_element_by_id()方法来定位网页元素对象
①、定位百度首页,输入框的元素

②、编写示例代码信息如下:
#coding=utf-8
from selenium import webdriver driver=webdriver.Chrome() #打开chrome,如果没有安装chrome,换成firefox或ie浏览器
driver.maximize_window() #最大化浏览器窗口
driver.implicitly_wait(8) #设置隐式时间等待 driver.get("https://www.baidu.com") #进入百度网页
#利用ID定位元素
try:
driver.find_element_by_id("kw") #在①中可以查看定位到输入框的id为“kw”
print('test pass : ID found')
except Exception as e:
print("Exception found",format(e))
driver.quit()
③ 运行代码后,会打印出 “test pass : ID found”的成功信息
二、Xpath定位元素 利用find_element_by_xpath()方法来定位网页元素对象,示例中,①我们先定位搜索输入框元素②在输入框输入selenium③再定位搜索按钮(百度一下)④在搜索结果中定位都selenium官网相关元素
①如下三个截图是分别定位的输入框元素、搜索按钮元素、搜索结果中selenium官网元素的xpath

②编写示例代码信息如下:
#coding=utf-8
import time
from selenium import webdriver driver=webdriver.Chrome() #打开chrome,如果没有安装chrome,换成firefox或ie浏览器
driver.maximize_window() #最大化浏览器窗口
driver.implicitly_wait(8) #设置隐式时间等待 driver.get("https://www.baidu.com") #进入百度网页 #利用 xpath定位元素
driver.find_element_by_xpath(".//*[@id='kw']").send_keys("selenium") #定位搜索输入框,并在输入框输入selenium搜索信息
driver.find_element_by_xpath(".//*[@id='su']").click() #定位“百度一下”的搜索按钮,并点击
time.sleep(2)
#第一种断言方法
#这里通过元素xpath表达式来确定该元素显示在结果列表,从而判断Selenium官网这个连接显示在结果列表
#这里采用了相对元素定位方法/.../
#通过selenium方法is_displayed() 来判断我们的目标元素是否在页面显示
driver.find_element_by_xpath(".//*[@id='1']/h3/a").is_displayed()
#第二种判断方法
ele_string=driver.find_element_by_xpath(".//*[@id='1']/h3/a").text
if(ele_string==u"Selenium - Web Browser Automation"):
print("测试成功,结果和预期结果匹配")
driver.quit()
③上面代码运行后,会打印出“测试成功,结果和预期结果匹配”的成功信息
三、tag name 定位元素 利用 find_element_by_tag_name() 方法 来定位页面元素
①定位百度搜索输入框的tag name,如下截图

上面图片中红色圈选区域的标签名称都是tag name;实际上我们目标元素是输入框,应该是input这个tag name,在图中蓝色高亮区域。但是如果只是通过input这个tag name来定位,发现上面有很多input的选项。所以我们扩大节点的参照选择,我们选择上面这个form来作为我们tag name
②示例代码如下
#coding=utf-8
from selenium import webdriver driver=webdriver.Chrome() #打开chrome,如果没有安装chrome,换成firefox或ie浏览器
driver.maximize_window() #最大化浏览器窗口
driver.implicitly_wait(8) #设置隐式时间等待 driver.get("https://www.baidu.com") #进入百度网页 #利用tag name定位元素
driver.find_element_by_tag_name("form")
print("test pass : tag name found")
driver.quit()
③代码运行后,打印“test pass : tag name found” 成功提示
四、link text 定位元素 利用find_element_by_link_text()方法 定位页面元素
①定位百度首页“新闻”这个文本字段来定义这个跳转链接元素

②示例代码如下:
#coding=utf-8
from selenium import webdriver driver=webdriver.Chrome() #打开chrome,如果没有安装chrome,换成firefox或ie浏览器
driver.maximize_window() #最大化浏览器窗口
driver.implicitly_wait(8) #设置隐式时间等待 driver.get("https://www.baidu.com") #进入百度网页 #利用 link text定位元素
driver.find_element_by_link_text("新闻")
print("test pass ")
driver.quit()
运行代码成功,打印成功信息
五、partial link text定位元素,partial link text和link text有点类似,区别就是选择这个元素的link text中一部分字段, 利用find_element_by_partial_link_text()方法定义页面元素
①以下面截图中被选中的信息做目标元素

②示例代码如下:
#coding=utf-8
from selenium import webdriver driver=webdriver.Chrome() #打开chrome,如果没有安装chrome,换成firefox或ie浏览器
driver.maximize_window() #最大化浏览器窗口
driver.implicitly_wait(8) #设置隐式时间等待 driver.get("https://www.baidu.com") #进入百度网页
#利用partial link text 定位元素
driver.find_element_by_partial_link_text("设为主页").click()
print("test pass : Success")
time.sleep(10) #停留时间,是为了查看点击进入的页面,是否成功
driver.quit()
运行成功后,可以查看到进入的页面,和打印的成功信息
六、class name定位元素 ,利用find_element_by_class_name()方法来定义页面元素
①定义百度首页输入框元素,查看class如下截图

②示例代码如下:
#coding=utf-8
from selenium import webdriver driver=webdriver.Chrome() #打开chrome,如果没有安装chrome,换成firefox或ie浏览器
driver.maximize_window() #最大化浏览器窗口
driver.implicitly_wait(8) #设置隐式时间等待 driver.get("https://www.baidu.com") #进入百度网页
#利用class name定位元素
driver.find_element_by_class_name("s_ipt")
print("test pass :Success!!")
driver.quit()
运行代码后,打印成功信息
七、CSS 定位元素 利用find_element_by_css() 方法
示例代码如下:
#coding=utf-8
from selenium import webdriver driver=webdriver.Chrome() #打开chrome,如果没有安装chrome,换成firefox或ie浏览器
driver.maximize_window() #最大化浏览器窗口
driver.implicitly_wait(8) #设置隐式时间等待 driver.get("https://www.baidu.com") #进入百度网页
driver.find_element_by_css_selector("#su") # 找 百度一下 这个按钮
print ('test pass') driver.quit()
八、name定位 ,利用find_element_by_name()方法
①定位百度输入框元素的name

②示例代码如下:
#coding=utf-8
from selenium import webdriver driver=webdriver.Chrome() #打开chrome,如果没有安装chrome,换成firefox或ie浏览器
driver.maximize_window() #最大化浏览器窗口
driver.implicitly_wait(8) #设置隐式时间等待 driver.get("https://www.baidu.com") #进入百度网页
driver.find_element_by_name("wd") # 这里百度搜索输入框有name = 'wd'这个节点信息
print ('test pass: element found by name value')
driver.quit()
运行代码后,打印出成功信息
Python+Selenium 利用ID,XPath,tag name,link text,partial link text,class name,css,name定位元素的更多相关文章
- Python selenium PO By.XPATH定位元素报错
Python selenium PO By.XPATH定位元素报错 如下代码经常报错: # 首页的“新建投放计划”按钮 new_ads_plan = (By.XPATH, "//*[tex ...
- python+selenium基础之XPATH定位(第一篇)
世界上最远的距离大概就是明明看到一个页面元素矗在那里,但是我却定位不到!! selenium定位元素的方法有很多种,像是通过id.name.class_name.tag_name.link_text等 ...
- python selenium ——— 动态id、class定位
什么样的是动态id呢? 动态id就是第一次点击显示的id与二次点击显示的不一样,一般是元素属性中包含一段数字的这种情况. 类似这种: 1 <input type="button&quo ...
- python+selenium基础之XPATH轴定位(第二篇)
第一篇讲了xpath定位的一些基本定位方法,这里再介绍一种:xpath轴定位,应用场景是当某个元素的各个属性及其组合都不足以定位时,那么可以利用其兄弟节点或者父节点等各种可以定位的元素进行定位. 1. ...
- 1.python+selenium利用cookie,跳过验证码直接登录
方法1 在登录时,叫代码等待一段时间,然后手动输入验证码 # coding:utf-8 from selenium import webdriver import time url = 'http:/ ...
- python+selenium利用cookie记住密码
先上代码 1 from selenium import webdriver 2 from time import sleep 3 4 dr = webdriver.Chrome() 5 dr.get( ...
- python selenium right click on an href and choose Save link as... on Chrome.
From:https://stackoverflow.com/questions/42781483/right-click-on-an-href-and-choose-save-link-as-in- ...
- python selenium框架的Xpath定位元素
我们工作中经常用到的定位方式有八大种:id name class_name tag_name link_text partial_link_text xpath css_selector 本篇内容主要 ...
- python + selenium webdriver 从主窗口A跳转至主窗口B后,无法定位窗口B的元素的问题
在做登录脚本的时候,如果只是单纯从登录页面进行元素定位的话,并不存在这个问题 但实际情况是,从首页A进入到登录页面B(并非弹出框),这时候在页面B无法定位到该页面的元素 问题:从页面A进入页面B,无法 ...
随机推荐
- 纠结了一下午的问题:运行opencv的HoughLinesP函数出错
问题描述:检测出的直线数量显然不对,非常巨大.程序运行崩溃. 解决办法:在添加附加依赖项时,Dubug模式只添加opencv_world310d.lib,Release模式下只添加opencv_wor ...
- 常用的web服务器软件整理(win+linux)
(1)Apache Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上.Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器 ...
- groovy 知识集锦
对应官方的<Program structure>的中文翻译 http://www.cnblogs.com/zhaoxia0815/p/7404387.html
- C语言语法
1.函数指针类型定义,然后指针结构体类型定义,最后的调用形式为aaa.bbb();(aaa为结构体变量)或者 aaa->bbb();(aaa为结构体指针),函数指针最好用结构体封装起来变成指针结 ...
- Post提交带参网址
前端 $(function(){ var obj=$('#form1'); obj.validate({ submitHandler: function (form){ var data={}; da ...
- ARTS打卡计划第二周-Tips-mysql-binlog-connector-java的使用
最近发现一个挺不错的框架mysql-binlog-connector-java,可以实时监控binlog的变化. 首先检查mysql的binlog是否开启,在开启的情况下: 引入依赖 <depe ...
- C++ 数组和字符串
数组和字符串的基本知识 目录 一.数组的声明 二.字符串 一.数组的声明 1.1.存储在每个元素中的值得类型: 1.2.数组名: 1.3.数组中的元素数. ];//short 数组元素值的类型,a数组 ...
- Spring MVC随笔记录
根据https://blog.csdn.net/abc997995674/article/details/80353410整理 @ModelAttribute 可以用在方法.方法参数上,也可以和@re ...
- java 图片转base64字符串、base64字符串转图片
java 图片转base64字符串.base64字符串转图片 1. 图片转base64字符串: /** * base64编码字符串转换为图片 * @param imgStr base64编码字符串 * ...
- python--第十九天总结(Django)
1.静态资源导入 {#在顶部load 一个staticfiles#} {% load staticfiles %} {#在底部使用#} <script src='{% static " ...