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


推荐阅读
  • 开发工具WebDeveloper1.1.8https:addons.mozilla.orgen-USfirefoxaddon60以工具栏的形式对网页的(X)HTML、脚本、多媒体、 ... [详细]
  • 本文探讨了如何利用HTML5和JavaScript在浏览器中进行本地文件的读取和写入操作,并介绍了获取本地文件路径的方法。HTML5提供了一系列API,使得这些操作变得更加简便和安全。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 整合百度UEditor编辑器于ASP后端的实现步骤与技巧
    随着微软停止对XP系统的支持,公司已全面升级至Windows 7。早期网站创建时使用的编辑器仅兼容IE6浏览器,而如今系统更新后,原有的编辑器已无法满足新环境的需求。本文详细介绍了如何将百度UEditor编辑器整合到ASP后端,包括实现步骤和实用技巧,确保网站在新系统下仍能高效运行并提供良好的用户体验。 ... [详细]
  • 自己用过的一些比较有用的css3新属性【HTML】
    web前端|html教程自己用过的一些比较用的css3新属性web前端-html教程css3刚推出不久,虽然大多数的css3属性在很多流行的浏览器中不支持,但我个人觉得还是要尽量开 ... [详细]
  • 本文介绍如何通过 JavaScript 实现一个基于鼠标坐标的 Tooltip 弹出层,详细解释了如何获取窗口和文档的尺寸及滚动位置,并优化了代码结构。 ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • 本文探讨了使用C#在SQL Server和Access数据库中批量插入多条数据的性能差异。通过具体代码示例,详细分析了两种数据库的执行效率,并提供了优化建议。 ... [详细]
  • 反向投影技术主要用于在大型输入图像中定位特定的小型模板图像。通过直方图对比,它能够识别出最匹配的区域或点,从而确定模板图像在输入图像中的位置。 ... [详细]
  • 探讨在 JavaScript 中使用不同方向的 for 循环来实现跟随鼠标的 div 动画时,为什么会出现不同的视觉效果。 ... [详细]
  • 本文介绍了如何使用JavaScript的Fetch API与Express服务器进行交互,涵盖了GET、POST、PUT和DELETE请求的实现,并展示了如何处理JSON响应。 ... [详细]
  • 在尝试使用C# Windows Forms客户端通过SignalR连接到ASP.NET服务器时,遇到了内部服务器错误(500)。本文将详细探讨问题的原因及解决方案。 ... [详细]
  • 本文探讨了如何在Classic ASP中实现与PHP的hash_hmac('SHA256', $message, pack('H*', $secret))函数等效的哈希生成方法。通过分析不同实现方式及其产生的差异,提供了一种使用Microsoft .NET Framework的解决方案。 ... [详细]
  • 本文详细介绍了如何在Android 4.4及以上版本中配置WebView以实现内容的自动高度调整和屏幕适配,确保中文显示正常,并提供代码示例。 ... [详细]
  • 前端图片合成技术_靠谱的前端需要做哪些准备?
    Web前端开发源于传统的互联网,互联网普及让人才需求量居高不下,随着移动互联网的高速发展,移动终端的前端开发也越来越受到重视, ... [详细]
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社区 版权所有