欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

webdriver的API与定位元素(2)

程序员文章站 2022-04-19 13:20:31
此处以“菜鸟教程”网页举例,先打开菜鸟教程首页https://www.runoob.com/,再打开“菜鸟笔记”tab>>> from selenium import webdriver>>> b = webdriver.Chrome()>>> b.get('https://www.runoob.com/')>>> b.maximize_window() #最大化窗口

此处以“菜鸟教程”网页举例,先打开菜鸟教程首页https://www.runoob.com/,再打开“菜鸟笔记”tab

>>> from selenium import webdriver
>>> b = webdriver.Chrome()
>>> b.get('https://www.runoob.com/')
>>> b.maximize_window()  #最大化窗口

webdriver的API与定位元素(2)

<a href="//www.runoob.com/w3cnote/" target="_blank" data-id="note" title="菜鸟笔记">菜鸟笔记</a>

⑤find_element_by_link_text()

有时候不是一个输入框也不是一个按钮,而是一个文字链接,我们可以通过link_text定位。

ele = b.find_element_by_link_text('菜鸟笔记')

ele.click()

⑥find_element_by_partial_link_text()

通过部分链接定位

ele = b.find_element_by_partial_link_text('笔记')
ele.click()

⑦find_element_by_xpath()参考链接

XPath是一种在XML文档中定位元素的语言。因为HTML可以看做XML的一种实现,所以selenium用户可以使用这种强大语言在web应用中定位元素。XPath扩展了上面id和name定位方式,提供了很多种可能性,比如定位页面上的第三个多选框。

XPath语法          

表达式 结果
/xxx 选取根节点xxx
/xxx/yyy 根据绝对路径选择元素
//xxx 整个文档扫描,找到所有xxx元素
//xxx/yyy 所有父元素为xxx的yyy元素
. 选取当前节点的父元素节点
.. 选取父元素地址
//xxx[@id] 选取所有xxx元素中有id属性的元素
//xxx[@id=yyy] 选取所有xxx元素id属性为yyy的元素 

webdriver的API与定位元素(2)

⑧find_element_by_css_selector()

CSS(Cascading Style Sheets)是一种语言,它被用来描述HTML和XML文档的表现。CSS使用选择器来为页面元素绑定属性。这些选择器可以被selenium用作另外的定位策略。CSS的比较灵活可以选择控件的任意属性。

CSS选择器参考手册

  • 复制相关控件的css路径:右键控件——检查,自动定位——右键该行,Copy,Copy selector

ele = b.find_element_by_css_selector('#index-nav > li:nth-child(2) > a')
ele.click()

父元素:

    (#)表示通过  id     属性来定位元素
    (.)表示通过 class  属性来定位元素
子元素(后代关系)

   #choose_car option    含空格的,后面的元素不必是前面元素的直接子元素,只要在父元素的里面
   .s_ipt_wr span 

   #choose_car > option  含>键的,    后面的元素必须是前面元素的直接子元素
   .s_ipt_wr > span

   ul > ol > li > em                可以是很多级的父子关系
组合型

#food  > span , p                     选择id 为food的所有span子元素和所有的p(包括非food的子元素)

#food > span , #food > p         选择id为food的所有span子元素和所有p子元素

#food  > *                                 选择id为food的所有子元素

兄弟节点的选择 (平级关系)

#food + div      只选择id为food紧跟后面的div

#food ~div       选择id为food后面的div或div们,只需要在id的后面,不需要紧跟

  • 根据元素的属性及属性值来选择元素详见链接

*[style]  选择所有有stype属性的元素

p[spec=len2]   选择spec属性值只等于len2的p元素

yp[spec='len2 len3' ]    选择spec属性值只等于len2 len3的p元素   有空的值一定要加引号

p[spec*='len2']             选择spec属性值包含len2的p元素

p[spec^='len2']            选择spec属性值以len2开头的p元素

p[spec&='len2']           选择spec属性值以len2结尾的p元素

p[class=special][name=p1]    选择class值等于special,并且name值等于p1的p元素

p:nth-child(1)              选择第一个p元素

p:nth-last-child(1)              选择倒数第一个p元素(要保证最后一个元素是p)

举例:ele = b.find_element_by_css_selector('input[type="text"]')

          ele = b.find_element_by_css_selector('img[alt="麦子学院三周年"]')

      webdriver的API与定位元素(2)

 

 

本文地址:https://blog.csdn.net/guo_qingxia/article/details/107147028