浅谈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
投稿

猜你喜欢

  • selenium+python截图不成功的解决方法

    2021-06-02 23:25:06
  • Python编程实现的简单神经网络算法示例

    2022-01-06 05:53:17
  • 详解如何利用Python制作24点小游戏

    2022-02-04 17:22:42
  • PYTHON基础-时间日期处理小结

    2023-04-23 02:02:59
  • Python使用pandas将表格数据进行处理

    2023-10-08 06:23:55
  • pandas 实现 in 和 not in 的用法及使用心得

    2021-10-23 12:25:07
  • Numpy实现卷积神经网络(CNN)的示例

    2022-10-06 17:44:17
  • Python pyecharts绘制折线图详解

    2021-05-22 17:42:49
  • python计算列表元素与乘积详情

    2023-05-12 00:50:19
  • Python利用逻辑回归分类实现模板

    2023-11-14 07:02:05
  • python中pytest收集用例规则与运行指定用例详解

    2021-12-01 14:23:21
  • 打造设计你自己的字体 Ⅲ

    2008-03-14 07:52:00
  • 详解Django将秒转换为xx天xx时xx分

    2023-06-14 22:52:12
  • go日志库中的logrus

    2023-07-21 13:48:02
  • python基于moviepy实现音视频剪辑

    2023-08-21 14:56:47
  • sqlserver中如何查询出连续日期记录的代码

    2011-09-30 11:16:56
  • PyTorch实现ResNet50、ResNet101和ResNet152示例

    2023-10-16 05:44:39
  • PHP微信开发之查询微信精选文章

    2023-11-14 12:45:54
  • PyCharm无法引用自身项目解决方式

    2023-06-10 06:25:53
  • asp下为什么韩文字后面显示分号?

    2011-03-10 11:07:00
  • asp之家 网络编程 m.aspxhome.com