webdriver中html节点的查找、定位
来源:互联网 发布:下列属于视频压缩算法 编辑:程序博客网 时间:2024/05/16 03:12
from selenium import webdriverfrom selenium.webdriver.common.action_chains import ActionChainsimport os, timefile_name = "file://" + os.path.abspath("find_elements.html")driver = webdriver.Firefox()driver.get(file_name)print("根据ID查找元素")msg = driver.find_element_by_id("divHello").textprint("find_element_by_id, msg =", msg)# 多个相同的id是不好的设计。print("根据ID查找元素 -- id相同")ids = driver.find_elements_by_id("multiDiv1")for id in ids: print("find_elements_by_id, test =", id.text)print("根据名称查找name")msg = driver.find_element_by_name("divByName").textprint("find_element_by_name, msg =", msg)msg = driver.find_element_by_name("divByName2").textprint("find_element_by_name, 嵌套 msg =", msg)print("根据class获取界面上的元素")ids = driver.find_elements_by_class_name("span3")for id in ids: print("find_elements_by_class_name, level =", id.get_attribute("level"))print("根据html标签的文字查找")msg = driver.find_element_by_link_text("快速购买").textprint("find_element_by_link_text, msg =", msg)msg = driver.find_element_by_partial_link_text("速购").textprint("find_element_by_partial_link_text, msg =", msg)print("根据xpath选择标签")# xpath 基本路径表达法# nodename 选取此节点的所有子节点。#/ 从根节点选取。#// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。#. 选取当前节点。#.. 选取当前节点的父节点。#@ 选取属性。divChild = driver.find_element_by_id("dropDown")print("find_element_by_id, class for dropDown =", divChild.get_attribute("class"))divs = driver.find_elements_by_xpath("/html/body/div")print("选取根节点下全部的div")for div in divs: print("body下全部div的子节点, Level =", div.get_attribute("level"))divs = driver.find_elements_by_xpath("/div")if divs.__len__() == 0: print("/节点下的div没有找到")for div in divs: print("body下全部div的子节点(包括孙子级别的)Level, level =", div.get_attribute("level"))print("")print("根节点的确认")print("根节点下的div")divs = driver.find_elements_by_xpath("div")if divs.__len__() == 0: print("根节点下没有div节点。")divs = driver.find_elements_by_xpath("html")if divs.__len__() != 0: print("根节点下有html节点")print("从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置")divs = driver.find_elements_by_xpath("//div")if divs.__len__() == 0: print("webdriver默认的根节点是什么?")for div in divs: print("body下全部div的子节点(不管层级的)Level =", div.get_attribute("level"))print()print("找到dropDown的节点,通过divChild找到其他节点")divChild = driver.find_element_by_id("dropDown") # 找到dropDown的节点.divs = divChild.find_elements_by_xpath("/html/body/div") # 从跟节点开始找。for div in divs: print("body下全部div的子节点, Level =", div.get_attribute("level"))id = divChild.find_element_by_xpath("..")print("divChild的父节点, desc =", id.get_attribute("desc"))print("")print("通过divChild找到body下面的第一个div节点。")id = divChild.find_element_by_xpath("../../../div[1]") # 第一个子节点只可以使用1,不能使用first()print("body的第一个子节点 div level =", id.get_attribute("level"))id = divChild.find_element_by_xpath("../../../div[last()]")print("body的最后一个子节点 div level =", id.get_attribute("level"))print("body的前四个div节点:")ids = divChild.find_elements_by_xpath("../../../div[position()<=4]")for div in ids: print("前四个节点, Level =", div.get_attribute("level"))#* 匹配任何元素节点。#@* 匹配任何属性节点。#node() 匹配任何类型的节点。print()print("head节点下的所有子节点")ids = driver.find_elements_by_xpath("/html/head/*")for id in ids: print("任意节点, tag_name =", id.tag_name)print("有tabindex的全部节点。")ids = driver.find_elements_by_xpath("//*[@tabindex]")for id in ids: print("tabindex, tag_name =", id.tag_name, " =", id.text)print("通过|同事选取多个节点。")ids = driver.find_elements_by_xpath("/html/head/* | //div[@class='dropdown']/*[position()>1]")#ids = driver.find_elements_by_xpath("//div[@class='dropdown']/*[1]")for id in ids: print("任意节点, tag_name =", id.tag_name, ", 属性role =", id.get_attribute("role"))driver.quit()
********后面是使用到的html文件********
<!DOCTYPE html><html><head> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <title>层级定位</title></head><body> <h3>Level locate</h3> <div class="span3" level="first"> <div class="well"> <div class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown" href="#">Link1</a> <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel" id="dropdown1"> <li><a tabindex="-1" href="#">Action</a></li> <li><a tabindex="-1" href="#">Another action</a></li> <li><a tabindex="-1" href="#">Something else here</a></li> <li class="divider"></li> <li><a tabindex="-1" href="#">Separated link</a></li> </ul> </div> </div> </div> <div class="span3" level="second"> <div class="well" desc="dropDwon的父节点"> <div class="dropdown" id="dropDown" level="second的孙子。。。"> <a class="dropdown-toggle" data-toggle="dropdown" href="#">Link2</a> <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel"> <li><a tabindex="-1" href="#">Action</a></li> <li><a tabindex="-1" href="#">Another action</a></li> <li><a tabindex="-1" href="#">Something else here</a></li> <li class="divider"></li> <li><a tabindex="-1" href="#">Separated link</a></li> </ul> </div> </div> </div> <div id="divHello">你好!</div> <div id="multiDiv1">multiDiv1</div> <div id="multiDiv1">multiDiv2</div> <div id="multiDiv1">multiDiv3</div> <div name="divByName">根据名称查找</div> <div><div name="divByName2">by name, 嵌套在其他元素里面。</div></div> <div level="ninth"><div><a href="">快速购买</a> </div></div> <span level="900000"></span></body></html>
阅读全文
0 0
- webdriver中html节点的查找、定位
- Webdriver学习笔记(三)元素的查找定位
- webdriver中frame定位
- 通过HTML节点的值来定位页面元素
- Linux中定位、查找文件的命令
- 二叉查找树中节点的删除。
- 二叉查找树中节点的删除
- 二叉查找树中节点的删除
- MFC中遍历TreeControl的节点或者查找某个节点
- 二叉排序树,完成创建节点,插入节点,删除节点,查找节点,中序遍历的功能
- 查找HTML下所有的节点名称,节点类型,节点值,所有节点的属性名称类型值
- webdriver中元素查找常用方法
- webdriver中元素查找常用方法
- webdriver中元素查找常用方法
- 在 Tree 中查找节点。在对话框中输入要查找的节点的值
- webdriver简单对象的定位_python
- Selenium Webdriver元素定位的方式
- Selenium+Webdriver 常用的元素定位方式
- 对话框取消置顶
- 关于js窗体的基础整合
- Failed to establish session Error while Installing APKs
- Android Resource介绍和使用(二)
- jsp 简易mvc模式
- webdriver中html节点的查找、定位
- 20170516@Map接口
- SAE 平台代码实现数据库定时备份以及同步到本地 2014/09/11 09:39:01 分类: 技术随笔 1人评论 次浏览 SAE 只允许用户通过phpMyAdmin管理远程数据库,
- 简单工厂组合策略模式_反射
- js学习笔记--基本概念
- ssh-agent参数详解
- 接口java.util.Map.Entry的使用
- 剑指offer——替换空格
- 算法导论之最优解算法--钢条切割问题扩展--流量充值问题