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

 更新时间:2021年01月13日 10:15:36   作者:戈壁楼兰  
这篇文章主要介绍了浅谈Selenium+Webdriver 常用的元素定位方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

假设页面源代码如下:

<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的语法来定位页面元素。
假设页面源代码如下:

页面源代码 

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

firebug查看xpath

相对路径的引用写法:

表达式 描述
//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元素定位的八种常用方式

到此这篇关于浅谈Selenium+Webdriver 常用的元素定位方式的文章就介绍到这了,更多相关Selenium Webdriver元素定位内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python闭包与引用以及需要注意的陷阱

    python闭包与引用以及需要注意的陷阱

    这篇文章主要介绍了python闭包与引用以及需要注意的陷阱,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-09-09
  • python实现图片加文字水印OPenCV和PIL库

    python实现图片加文字水印OPenCV和PIL库

    本文来为大家介绍一下,使用python中的库实现给图片添加文字水印,openCV可以给图片添加水印,如果要添加汉字水印那就要使用PIL库
    2021-09-09
  • Python 时间操作datetime详情(下)

    Python 时间操作datetime详情(下)

    我们在上一文datetime模块对datetime模块中包含了六个类对象如date、time、datetime等对时间和日期进行操作。这一篇文章我们继续上一篇文章的内容学习datetime模块中六大类的相关方法和属性
    2021-11-11
  • 详解Python中的null是什么

    详解Python中的null是什么

    这篇文章主要介绍了Python中的null是什么,Python中其实没有null这个词,取而代之的是None对象,即特殊类型NoneType,代表空、没有,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • python编写实现抽奖器

    python编写实现抽奖器

    这篇文章主要为大家详细介绍了python编写实现抽奖器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09
  • python正则表达式match和search用法实例

    python正则表达式match和search用法实例

    这篇文章主要介绍了python正则表达式match和search用法,实例分析了正则表达式中match和search的功能、定义及相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • pytorch中关于distributedsampler函数的使用

    pytorch中关于distributedsampler函数的使用

    这篇文章主要介绍了pytorch中关于distributedsampler函数的使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • python命令行运行报错ModuleNotFoundError:No module named‘XXX‘找不到自定义模块

    python命令行运行报错ModuleNotFoundError:No module named‘X

    这篇文章主要介绍了python命令行运行报错ModuleNotFoundError:No module named‘XXX‘找不到自定义模块问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Python实现去除图片中指定颜色的像素功能示例

    Python实现去除图片中指定颜色的像素功能示例

    这篇文章主要介绍了Python实现去除图片中指定颜色的像素功能,结合具体实例形式分析了Python基于pil与cv2模块的图形载入、运算、转换等相关操作技巧,需要的朋友可以参考下
    2019-04-04
  • NoSql数据库介绍及使用Python连接MongoDB

    NoSql数据库介绍及使用Python连接MongoDB

    MongoDB是一个非常流行的NoSQL数据库,常用于大规模数据存储应用,下面这篇文章主要给大家介绍了关于NoSql数据库及使用Python连接MongoDB的相关资料,需要的朋友可以参考下
    2023-06-06

最新评论