热门标签 | 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()方法用于获取列表中一个元素,默认为最后一个元素


推荐阅读
  • HTML5 Web存储技术是许多开发者青睐本地应用程序的重要原因之一,因为它能够实现在客户端本地存储数据。HTML5通过引入Web Storage API,使得Web应用程序能够在浏览器中高效地存储数据,从而提升了应用的性能和用户体验。相较于传统的Cookie机制,Web Storage不仅提供了更大的存储容量,还简化了数据管理和访问的方式。本文将从基础概念、关键技术到实际应用,全面解析HTML5 Web存储技术,帮助读者深入了解其工作原理和应用场景。 ... [详细]
  • 在第10天的夜灵HTML日志中,我们深入探讨了浏览器兼容性和高级选择器的应用。CSS3引入了许多新属性,但在旧版浏览器中的支持情况并不理想。然而,目前主流浏览器的最新版本已全面支持这些新特性。对于那些不支持CSS3新属性的浏览器,我们提供了多种解决方案,以确保网站在不同环境下的兼容性和用户体验。此外,我们还详细讨论了如何利用高级选择器提升页面布局的灵活性和可维护性。 ... [详细]
  • 开发工具WebDeveloper1.1.8https:addons.mozilla.orgen-USfirefoxaddon60以工具栏的形式对网页的(X)HTML、脚本、多媒体、 ... [详细]
  • 七款高效编辑器与笔记工具推荐:KindEditor自动换行功能解析
    本文推荐了七款高效的编辑器与笔记工具,并详细解析了KindEditor的自动换行功能。其中,轻笔记QingBiJi是一款完全免费的记事本软件,用户可以通过其简洁的界面和强大的功能轻松记录和管理日常事务。此外,该软件还支持多平台同步,确保用户在不同设备间无缝切换。 ... [详细]
  • 本文深入探讨了 hCalendar 微格式在事件与时间、地点相关活动标记中的应用。作为微格式系列文章的第四篇,前文已分别介绍了 rel 属性用于定义链接关系、XFN 微格式增强链接的人际关系描述以及 hCard 微格式对个人和组织信息的描述。本次将重点解析 hCalendar 如何通过结构化数据标记,提高事件信息的可读性和互操作性。 ... [详细]
  • 利用 Python 实现 Facebook 账号登录功能 ... [详细]
  • 如何使网页自适应电脑屏幕分辨率?
    在1024*768或者800*600的分辨率下可以自动调整成适用于该客户端分辨率的大小。  第一种方法:做一个网页解决问题(长了点)  如果只是因为浏览者改变了浏览器的设置,或者因为浏览器不兼容,使自 ... [详细]
  • php强制用户转向www域名办法php强制转向域名
    php教程|php手册php,强制,转向,php教程-php手册php强制用户转向www域名的方法,php强制转向域名matlab神经网络43个案例分析源码,vscode创建前后端 ... [详细]
  • 深入解析HTML5字符集属性:charset与defaultCharset
    本文将详细介绍HTML5中新增的字符集属性charset和defaultCharset,帮助开发者更好地理解和应用这些属性,以确保网页在不同环境下的正确显示。 ... [详细]
  • importpymysql#一、直接连接mysql数据库'''coonpymysql.connect(host'192.168.*.*',u ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 本项目通过Python编程实现了一个简单的汇率转换器v1.02。主要内容包括:1. Python的基本语法元素:(1)缩进:用于表示代码的层次结构,是Python中定义程序框架的唯一方式;(2)注释:提供开发者说明信息,不参与实际运行,通常每个代码块添加一个注释;(3)常量和变量:用于存储和操作数据,是程序执行过程中的重要组成部分。此外,项目还涉及了函数定义、用户输入处理和异常捕获等高级特性,以确保程序的健壮性和易用性。 ... [详细]
  • 本文探讨了如何通过检测浏览器类型来动态加载特定的npm包,从而优化前端性能。具体而言,仅在用户使用Edge浏览器时加载相关包,以提升页面加载速度和整体用户体验。此外,文章还介绍了实现这一目标的技术细节和最佳实践,包括使用User-Agent字符串进行浏览器识别、条件加载策略以及性能监控方法。 ... [详细]
  • 为了实现跨浏览器兼容的禁用文本选择功能,可以通过在全局CSS样式中定义一个特定的类来禁止用户选中文本。具体做法是在全局样式表中添加一个名为 `.no-select` 的类,并在需要禁用文本选择的元素上应用该类。这样可以确保在不同浏览器中都能达到一致的效果。此外,还可以结合JavaScript进一步增强用户体验,例如在某些交互场景下动态启用或禁用文本选择功能。 ... [详细]
  • CSS深入剖析text和column
    这里写目录标题一、text-shadow二、font-face三、其他text常用特性四、column一、text-shadow与box-shadow类似,这里通过 ... [详细]
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社区 版权所有