热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

定位页面元素

环境准备安装fitepath火狐浏览器-工具-附加组件-搜索firepath进行安装安装firebug插件火狐浏览器-工具-附加组件-搜索firebug进行安装

环境准备

安装fitepath

火狐浏览器-工具-附加组件-搜索firepath进行安装

 

安装firebug插件

火狐浏览器-工具-附加组件-搜索firebug进行安装

 

 

 

firebug定位

打开firebug点击查看页面元素按钮,再点击想要查看的元素,就可以定位到页面元素内容

 

 

 

获取单个页面元素

find_element_by_id

find_element_by_name

find_element_by_xpath

find_element_by_link_text

find_element_by_partial_link_text

find_element_by_tag_name

find_element_by_class_name

find_element_by_css_selector

 

 

使用id定位

 

 

 

#coding:utf-8
from selenium import webdriver
import time

driver=webdriver.Firefox()  #启动火狐浏览器
driver.get("http://www.baidu.com") #打开百度
driver.find_element_by_id('kw').send_keys("ceshi") #通过id定位搜索框然后输入内容
driver.find_element_by_id('su').click()  #通过id定位百度一下按钮,并点击该按钮
time.sleep(3)
driver.quit()

 

使用name定位

如果name属性是唯一的,可以通过那么属性定位

 

 

 

driver.find_element_by_name('username').send_keys("name") #通过name定位输入框

 

使用class_name定位

class_name 不容易定位到元素

 

driver.find_element_by_class_name('s_ipt').send_keys("ceshi") #通过class_name定位搜索框

 

 

使用link_text定位

链接定位

 

 

 

driver.find_element_by_link_text('糯米')  

 

使用partial_link_text定位

模糊链接定位

 

地图

 

driver.find_element_by_partial_link_text('地')

 

使用tag_name定位

指标签名称定位,因为相同标签很多,一般不用标签定位,(可以用来定位一组元素,看定位一组元素里面的实例),

 

使用xpath定位

通过属性定位

 

#coding:utf-8
#第一步导入selenium里的webdriver模块
from selenium import webdriver   
#第二步 启动浏览器
driver=webdriver.Firefox()  #启动火狐浏览器
#第三步 打开url
driver.get("http://www.baidu.com")
driver.find_element_by_xpath("//*[@id='kw']")

 

通过标签加属性定位

 

 

driver.find_element_by_xpath("//input[@id='kw']")

driver.find_element_by_xpath("//input[@name='wd']")

driver.find_element_by_xpath("//*[@id='kw']")  #*代表不用指定标签

 

层级

如果一个元素属性不是很明显,我们可以往上找(父元素)

 

 

 

#通过父亲定位input标签

driver.find_element_by_xpath('//span[@class="bg s_btn_wr"]/input')

 

#通过爷爷定位inpu

driver.find_element_by_xpath('//form[@id="form"]/span[2]/input')

使用css定位

定位百度搜索框

 

 

通过class属性定位

.表示class属性

 

driver.find_element_by_css_selector(".s_ipt")

通过id属性定位

#号表示id属性,如:#kw

driver.find_element_by_css_selector("#kw")

通过其它属性定位

driver.find_element_by_css_selector("[autocomplete='off']")

driver.find_element_by_css_selector("[name='wd']")

 

通过标签定位

driver.find_element_by_css_selector("input#kw") #标签与id属性

driver.find_element_by_css_selector("input.s_ipt")#标签与class属性

driver.find_element_by_css_selector("input[id=kw]") #标签与其它属性

使用By定位元素

find_element()方法只用于定位元素。它需要传入两个参数,第一参数是定位的类型,由By提供;第二个参数是定位的具体方式。在使用By之前需要将By类导入

 

 

find_element(By.ID,'kw')

find_element(By.NAME,'wd')

find_element(By.NAME,'wd')

find_element(By.CLASS_NAME,'s_ipt')

find_element(By.TAG_NAME,'input')

find_element(By.LINK_TEXT,'新闻')

find_element(By.PARTIAL_LINK_TEXT,'新')

find_element(By.XPATH,"//*[@id='kw']")

find_element(By.CSS_SELECTOR,"#kw")

 

实例

 

#coding=utf-8

from selenium import webdriver
from selenium.webdriver.common.by import By #导入By类
driver=webdriver.Firefox()
driver.get('https://www.baidu.com/')
driver.find_element(By.ID,'kw').send_keys(u'测试') #通过By id定位百度的输入框,然后输入内容

 

定位一组元素

获取批量页面元素

find_elements_by_name

find_elements_by_xpath

find_elements_by_link_text

find_elements_by_partial_link_text

find_elements_by_tag_name

find_elements_by_class_name

find_elements_by_css_selector

 

 

html文件内容:

 

草莓


西瓜


橘子

 

 

 

 

脚本:

 

1.通过tag_name定位input元素

 

#coding=utf-8

import time
from selenium import webdriver
driver=webdriver.Firefox()
driver.get(r'C:\Users\yueli\Desktop\a.html')
#选择页面上所有的tag name为input的元素
inputs=driver.find_elements_by_tag_name('input')
#然后从中过滤type为checkbox的元素,单机勾选
for i in inputs:
    if i.get_attribute('type')=='checkbox':
        i.click()
        time.sleep(3)
driver.quit()

 

 

备注:get_attribute()方法获取元素的type的属性值

 

 

2.通过xpath定位input元素

 

#coding=utf-8

import time
from selenium import webdriver
driver=webdriver.Firefox()
driver.get(r'C:\Users\yueli\Desktop\a.html')
#通过xpath找到type=checkbox的元素
inputs=driver.find_elements_by_xpath("//input[@type='checkbox']")

for i in inputs:
    i.click()
    time.sleep(2)
print len(inputs)
#把页面上最后1个checkbox的钩给去掉
driver.find_elements_by_xpath("//input[@type='checkbox']").pop().click()
time.sleep(2)
driver.quit()

 

3.通过css定位input元素

 

#coding=utf-8

import time
from selenium import webdriver
driver=webdriver.Firefox()
driver.get(r'C:\Users\yueli\Desktop\a.html')
#通过xpath找到type=checkbox的元素
inputs=driver.find_elements_by_css_selector("input[type=checkbox]")

for i in inputs:
    i.click()
time.sleep(2)
print len(inputs)
#把页面上最后1个checkbox的钩给去掉
driver.find_elements_by_css_selector("input[type=checkbox]").pop().click()
time.sleep(2)
driver.quit()

 

Xpathcss方法 循环式不用加判断方法,因为定位元素是已经做了判断

pop()方法用于获取列表中一个元素,默认为最后一个元素


推荐阅读
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • 本文介绍了网页播放视频的三种实现方式,分别是使用html5的video标签、使用flash来播放以及使用object标签。其中,推荐使用html5的video标签来简单播放视频,但有些老的浏览器不支持html5。另外,还可以使用flash来播放视频,需要使用object标签。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了一些好用的搜索引擎的替代品,包括网盘搜索工具、百度网盘搜索引擎等。同时还介绍了一些笑话大全、GIF笑话图片、动态图等资源的搜索引擎。此外,还推荐了一些迅雷快传搜索和360云盘资源搜索的网盘搜索引擎。 ... [详细]
  • PHPMailer邮件类邮件发送功能的使用教学及注意事项
    本文介绍了使用国外开源码PHPMailer邮件类实现邮件发送功能的简单教学,同时提供了一些注意事项。文章涵盖了字符集设置、发送HTML格式邮件、群发邮件以及避免类的重定义等方面的内容。此外,还提供了一些与PHP相关的资源和服务,如传奇手游游戏源码下载、vscode字体调整、数据恢复、Ubuntu实验环境搭建、北京爬虫市场、进阶PHP和SEO人员需注意的内容。 ... [详细]
  • 嵌入式处理器的架构与内核发展历程
    本文主要介绍了嵌入式处理器的架构与内核发展历程,包括不同架构的指令集的变化,以及内核的流水线和结构。通过对ARM架构的分析,可以更好地理解嵌入式处理器的架构与内核的关系。 ... [详细]
  • HTML5网页模板怎么加百度统计?
    本文介绍了如何在HTML5网页模板中加入百度统计,并对模板文件、css样式表、js插件库等内容进行了说明。同时还解答了关于HTML5网页模板的使用方法、表单提交、域名和空间的问题,并介绍了如何使用Visual Studio 2010创建HTML5模板。此外,还提到了使用Jquery编写美好的HTML5前端框架模板的方法,以及制作企业HTML5网站模板和支持HTML5的CMS。 ... [详细]
author-avatar
ivanjjHelen
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有