浅谈Selenium+Webdriver 常用的元素定位方式

作者:戈壁楼兰 时间:2022-04-17 23:14:43 

假设页面源代码如下:


<input type="text"name="wd" id="kw1" class="input_wd" maxlength="100"style="width:474px;"autocomplete="off">

通过id定位元素:find_element_by_id(“id_vaule”):


browser=webdriver.Firefox()
browser.find_element_by_id("kw1")

通过name定位元素:find_element_by_name(“name_vaule”)


browser.find_element_by_name("wd")

通过tag_name定位元素:find_element_by_tag_name(“tag_name_vaule”)


browser.find_element_by_tag_name("input")#tag_name指标签名称

通过class_name定位元素:find_element_by_class_name(“class_name”)


browser.find_element_by_class_name("input_wd")

通过css定位元素:find_element_by_css_selector();用css定位是比较灵活的


browser.find_element_by_css_selector("input[id=\"kw1\"]")
browser.find_element_by_css_selector("input.input_wd)
browser.find_element_by_css_selector("#kw1)

通过xpath定位元素:find_element_by_xpath(“xpath”)
XPath(XML Path Language)是一种在XML文档中定位元素的语言,由于HTML文档本身就是一个标准的XML页面,所以我们可以使用XPath的语法来定位页面元素。
假设页面源代码如下:

浅谈Selenium+Webdriver 常用的元素定位方式 

注:元素的xpath绝对路径可通过firebug直接查询,绝对路径以单/开头,从文档的根节点开始解析(如:/html/body/table/tbody/tr[2]/td[2]/div/div[1]/div/div[2]/div[4]/div[3]/div[1]/a[1]),相对路径则以//开头,从文档的任意节点开始解析。

浅谈Selenium+Webdriver 常用的元素定位方式

相对路径的引用写法:

表达式描述
//input选取所有input元素
//form[1]/input选取第一个form元素内的所有直接子input元素
//form[1]//input选取第一个form元素内的所有子input元素,不论嵌套了多少层
//form[1]/input[last()]选取第一个form元素内的所有直接子input元素中的最后一个
//form[@id='loginForm']选取id属性值为loginForm的form元素
//input[@name='continue'][@type='button']选取name属性值为continue且type属性值为button的input元素
//form[@id^='loginForm']/input[4]选取id以loginForm开头的form元素下第4个input元素
browser.find_element_by_xpath(“//td[contains(text(),'下单编号')]”)选取text文本为下单编号的td

通过link定位:find_element_by_link_text(“text_vaule”)或者find_element_by_partial_link_text()
适用于页面中出现的文字链接


browser.find_element_by_link_text("登录").click() #点击登录链接
browser.find_element_by_partial_link_text("登").click()#只用了链接中的部分文字

参考资料:

[1]XPath教程
[2]Selenium Webdriver元素定位的八种常用方式

来源:https://blog.csdn.net/bananasssss/article/details/51316369

标签:Selenium,Webdriver,元素定位
0
投稿

猜你喜欢

  • 用户体验之内容篇

    2010-11-05 18:21:00
  • Python编程生成随机用户名及密码的方法示例

    2021-12-14 13:12:17
  • Window下Mysql忘记root密码怎么重置

    2024-01-15 22:33:23
  • 关于matplotlib及相关cmap参数的取值方式

    2023-06-26 15:19:18
  • 在Python程序员面试中被问的最多的10道题

    2022-02-27 08:20:03
  • 5款Python程序员高频使用开发工具推荐

    2022-01-25 14:09:16
  • Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)

    2022-04-07 09:50:44
  • python 爬取百度文库并下载(免费文章限定)

    2022-05-08 16:18:28
  • Pytorch中的图像增广transforms类和预处理方法

    2022-09-10 22:21:06
  • python从入门到精通(DAY 3)

    2023-11-03 08:23:18
  • pandas is in和not in的使用说明

    2023-04-04 22:06:11
  • 教你利用pygame模块制作跳跃小球小游戏

    2022-02-07 11:28:46
  • Python实现五子棋联机对战小游戏

    2023-10-21 05:25:42
  • python 将日期戳(五位数时间)转换为标准时间

    2021-09-14 06:36:47
  • Python爬虫之Selenium实现窗口截图

    2022-09-19 20:09:23
  • Python中将字典转换为XML以及相关的命名空间解析

    2022-07-22 20:05:03
  • Mysql语句快速复习教程(全)

    2024-01-26 20:13:37
  • 一文教你用Python中progress库实现进度条

    2023-09-14 10:28:31
  • 简单三步实现报表页面集成天气

    2024-04-25 13:08:16
  • Python温度转换实例分析

    2023-08-21 22:48:32
  • asp之家 网络编程 m.aspxhome.com