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,无法 ...
随机推荐
- 算法之Python实现 - 002 : 换钱的最少货币数补充(每种货币只能使用一次)
[题目]:给定数组arr,arr中所有的值都为正数且不重复.每个值代表一种面值的货币,每种面值的货币仅可以使用一张,再给定一个整数aim代表要找的钱数,求组成aim的最少货币数. [代码1]:时间与额 ...
- python学习笔记记录
计算机基础知识: 随机存储器就是内存,缺点是断电数据丢失:优点:读写数据速度快. 外存储器硬盘 有点断电数据保存 缺点:读写速度慢 操作系统:是一个特异功能的程序,操作系统扮演了用户与计算机之间的桥梁 ...
- 《Spring_four》团队作业4—基于原型的团队项目需求调研与分析
(一)需求规格说明书github地址:https://github.com/gzyt/SRS (二)原型链接:http://www.cnblogs.com/lztxh/p/9011873.html ( ...
- lucene复合条件查询案例——查询name域 或 description域 包含lucene关键字的两种方式
方式一:使用语法表达式查询 //查询name域 或 description域包含lucene关键字 QueryParser queryParser = new QueryParser("na ...
- Maven工程控制台乱码问题(IDEA)
转自https://blog.csdn.net/love_live2/article/details/79311978 个人推荐使用文章中介绍的第三种方法,感觉挺好用的
- 关于处理java.lang.IllegalArgumentException at java.sql.Date.getHours异常
https://segmentfault.com/a/1190000016937108
- mysql判断表里面一个逗号分隔的字符串是否包含单个字符串、查询结果用逗号分隔
1.mysql判断表里面一个逗号分隔的字符串是否包含单个字符串 : FIND_IN_SET select * from tablename where FIND_IN_SET(传的参数,匹配字段) 例 ...
- Huawei BGP和OSPF双边界重分布(二)
网络拓扑: 本例主要配置和例一致,主要是在AR3260-AR1和AR3260-AR2的路由域的边界上,从AR3260-AR1上重分布进BGP 65001的路由的时候打tag 650011,在AR326 ...
- appium三种等待时间
1.强制等待(固定等待) 2.隐式等待 是appium中webdriver中自带的休眠方法,设置的是全局等待时间(在全局等待时间内之间的响应操作都会立即结束等待,然后进行操作) 3.显式等待
- django xadmin多对多字段过滤(含filter的反向查询)
要实现的功能: 继昨天实现拓展User模型使其得到其上级用户,今天要实现某些模型与用户多对多字段过滤功能. 功能描述:以用户指派功能为例,当前用户将文件指派给多个下级,修改前 程序会将所有用户都显示出 ...