pip install selenium

2.selenium查找元素就八种方法

from selenium import webdriver

driver=webdriver.Chrome()

#说明find_elements_by 多了一个s,返回的就是一个列表形式

1) driver.find_element_by_id()

#传入元素标签对里面的id数据    driver.find_element_by_id("kw")

2) driver.find_element_by_name()

#传入元素标签对里面的name数据    driver.find_element_by_name("wd")

3)driver.find_element_by_class_name()

#传入元素标签对里面class的名称    driver.find_element_by_class_name("s_ipt")

4) driver.find_elements_by_link_text()

#传入元素标签对a里面的文本数据    driver.find_elements_by_link_text("hao123")

5) driver.find_element_by_partial_link_text()

#传入元素标签对a里面的部分文本数据    driver.find_element_by_partial_link_text("hao")

6) driver.find_element_by_tag_name()

#传入元素标签对的标签名    driver.find_element_by_tag_name("a")

7) driver.find_element_by_xpath()    #格式://+标签名+[@属性(例如,id,name,class)="属性对应的值"]

一.以普通元素定位

driver.find_element_by_xpath(‘//a[@name="tj_trnews"]’)    #定位新闻

二.以text()进行元素定位

driver.find_element_by_xpath(‘//a[text()="新闻"]’)       #定位新闻      //为固定格式,a为标签名,text()取标签对中间的文本

三.以contains()进行元素定位

driver.find_element_by_xpath(‘//a[contains(text(),"hao")]’)  #定位hao123  //为固定格式,a为标签名,text()取标签对中间的文本,contains为匹配部分数据

四.以or ,and 辅助定位,有时候一个属性定位不了,那么可以用or,and辅助一起定位    #格式:     //+标签名+[@属性(例如,id,name,class)="属性对应的值" and或or @属性(例如,id,name,class)="属性对应的值"]

driver.find_element_by_xpath('//a[@name="tj_briicon" and @class="bri"]')    #定位更多产品

五.轴定位,parent(父亲),ancestor(祖先,包括父亲),perceding-sibling(当前元素节点标签之前的所有兄弟结点),following-sibling(当前元素节点标签之后的所有兄弟结点)    #格式://+标签名+[@属性(例如,id,name,class)="属性对应的值"]+/+轴定位+::+标签名

1)定位父亲

driver.find_element_by_xpath('//a[@name="tj_briicon"]/parent::div[@id="u1"]')    #定位更多产品的父亲那么就是u1

2)定位祖先

driver.find_element_by_xpath('//a[@name="tj_briicon"]/ancestor::div')    #定位更多产品的祖先有4个,包括父亲

3)perceding-sibling(当前元素节点标签之前的所有兄弟结点)

driver.find_element_by_xpath(‘//a[@name="tj_briicon"]/preceding-sibling::a[@name="tj_settingicon"]’)    #定位更多产品前面的兄弟节点设置,如果不写[@name="tj_settingicon"],那么会出现8个兄弟节点

4)following-sibling(当前元素节点标签之后的所有兄弟结点)

driver.find_element_by_xpath('//a[@name="tj_trnews"]/following-sibling::a[@name="tj_trhao123"]')    #定位新闻后面的兄弟节点hao123,如果不写[@name="tj_trhao123"],那么会出现8个兄弟节点

8) driver.find_element_by_css_selector()

一.以ID进行元素定位

#号表示通过id属性来定位元素

driver.find_element_by_css_selector("#kw")

二.以class属性定位元素

.号表示通过class属性来定位元素

driver.find_element_by_css_selector(".s_ipt")

三.以元素属性定位元素(常用)

driver.find_element_by_css_selector(‘[name=“wd”]‘)

driver.find_element_by_css_selector(‘[maxlength=“100”]‘)

~号表示匹配部分属性值

属性值包含s_btn:适用于由空格分隔的属性值。

driver.find_element_by_css_selector(‘[class~="s_btn”]‘)

四.以父子定位元素

查找有父级元素的标签名为span,它的所有标签名叫input的子元素

driver.find_element_by_css_selector("span>input")

五.以组合定位元素

标签名#id属性值:指的是该input标签下id属性为kw的元素

driver.find_element_by_css_selector("input#kw")

标签名.class属性值:指的是该input标签下class属性为s_ipt的元素

driver.find_element_by_css_selector("input.s_ipt")

标签名[属性=’属性值‘]:指的是该input标签下name属性为wd的元素

driver.find_element_by_css_selector(‘input[name=“wd”]‘)

父级元素标签名>标签名.class属性值:指的是span下的input标签下class属性为s_ipt的元素

find_element_by_css_selector("span>input.s_ipt")

多个属性组合定位元素(常用)

指的是input标签下id属性为kw且name属性为wd的元素

driver.find_element_by_css_selector(‘input.s_ipt[name=“wd”]‘)

指的是input标签下name属性为wd且maxlength为100的元素

driver.find_element_by_css_selector(‘input[name=“wd“][maxlength=“100“]‘)

3.查找元素返回WebElement对象背后的属性(以id为例子)

1)返回元素属性值

1 ele=driver.find_element_by_id("kw").get_attribute("class")

2 print(ele)

结果:s_ipt

2)返回元素属性值,但是该方法只能获取元素中id或name的属性值,其他的都不能获取

1 ele=driver.find_element_by_id("kw").get_property("id")

2 print(ele)

3 ele1=driver.find_element_by_class_name("s_ipt").get_property("id")

4 print(ele1)

5 ele2=driver.find_element_by_id("kw").get_property("name")

6 print(ele2)

7 ele3=driver.find_element_by_class_name("s_ipt").get_property("name")

8 print(ele3)

9 ele4=driver.find_element_by_class_name("s_ipt").get_property("class") #这种是不行的返回None

10 print(ele4)

结果:

kw

kw

wd

wd

None

property是DOM中的属性,是JavaScript里的对象;attribute是HTML标签上的特性,它的值只能够是字符串;

3)返回内部存储id,这个属性用于判断两个webelements是否引用同个元素

1 ele=driver.find_element_by_id("kw").id

2 print(ele)

3 ele1=driver.find_element_by_name("wd").id

4 print(ele1)

结果:因为都是引用同一个标签对里面的数据所以id肯定一样

0.822772467010251-1

0.822772467010251-14)

4)返回标签对的名称

1 ele=driver.find_element_by_id("kw").tag_name

2 print(ele)

结果:input

5)判断元素是否可见(返回bool值)

1 ele=driver.find_element_by_id("kw").is_displayed()

2 print(ele)

结果:True

6)判断元素是否被选中(一般用于单选框或者复选框)

1 from selenium import webdriver

2 from selenium.webdriver.common.action_chains import ActionChains

3 driver=webdriver.Chrome()

4 driver.get("http://www.baidu.com")

5 ele=driver.find_element_by_xpath('//a[@name="tj_login"]/following-sibling::a[text()="设置"]')

6 ActionChains(driver).move_to_element(ele).perform()

7 driver.find_element_by_class_name("setpref").click()

8 time.sleep(3)

9 a=driver.find_element_by_id("sh_2").is_selected()

10 print(a)

11 driver.quit()

结果:True

7)判断元素是否存在HTML上(is_displayed()本身这个函数用于判断某个元素是否存在页面上(这里的存在不是肉眼看到的存在,而是html代码的存在,很少用到)

1 from selenium import webdriver

2 driver=webdriver.Chrome()

3 driver.get("http://www.baidu.com")

4 a=driver.find_element_by_id('su').is_displayed()

5 print(a)

6 driver.quit()

结果:True

selenium定位到元素后获取其属性_selenium 元素查找与属性相关推荐

  1. 定位到元素后获取其属性_Selenium界面自动化测试(4)(Python):元素定位及操作...

    在操作Web元素之前,需要先找到该元素,这个查找的过程称之为元素定位. Selenium支持8种元素定位方法: ID:根据元素的id属性值来定位元素. Name:根据元素的name属性值来定位元素. ...

  2. 定位到元素后获取其属性_(11)让“盒子”动起来:② “定位”和 BFC | CSS

    原创:itsOli @前端一万小时本文首发于公众号「前端一万小时」本文版权归作者所有,未经授权,请勿转载!本文节选自"语雀"私有付费专栏「前端一万小时 | 从零基础到轻松就业」 ❗ ...

  3. jq 如何获取和当然元素相同类名的标签_jquery获取兄弟元素-jquery获取下一个兄弟元素-jquery获取最后一个兄弟元素...

    jquery怎幺获取当前元素的兄弟元素 可以使用 siblings() jquery既然有next方法取得下一个元素,那幺有previous方法吗 $("#id").prev(); ...

  4. jquery 同级元素下的子元素_jq 获取所有父级元素及同级元素及子元素的方法(推荐)...

    1.获取父级元素 $("#id").parent() 获取其父级元素 $("#id").parents() 获取其所有的祖先元素 $("#id&quo ...

  5. 获取父窗口元素或者获取iframe中的元素(相同域名下)

    jquery方法 在父窗口中获取iframe中的元素 //方法1 $("#iframe的ID").contents().find("iframe中的元素");/ ...

  6. python提取矩阵元素_python获取array中指定元素的示例

    python获取array中指定元素的示例 对于array,如2-D的array,如何取指定元素 设array为3*10的shape s = array([[ 0, 1, 2, 3, 4, 5, 6, ...

  7. selenium定位两个相同id、class的元素的第二个元素

    如果遇到多个相同id的按钮,想直接定位到第某一个个.需要加s 本以为可以这样直接调用! cls.driver.find_element(By.ID, "com.qijianbx.app.qj ...

  8. python将索引升序_程序在Python中按升序删除元素后获取列表的索引

    假设我们有一个不同值的列表,并且我们要以非降序删除每个数字.我们必须按删除顺序找到数字索引. 因此,如果输入类似于nums = [4.6.2.5.3.1],那么当我们删除1时,输出将为[5.2.3.0 ...

  9. Yolov5定位VIN码后获取vin的区域并识别

    在yolov5的detect.py中修改 # YOLOv5

最新文章

  1. 基于视频理解TSM和数据集Kinetics-400的视频行为识别
  2. LeetCode --- Validate Binary Search Tree
  3. 用VBA编程时,如何对当前的工作表进行选定[收集]
  4. ‘sort’命令的14个有用的范例
  5. .NET Core Linux环境搭建(CentOS 7)
  6. linux上实现getch()函数
  7. 计算机二级公共知识web,全国计算机等级考试二级web大纲
  8. docker网络端口映射
  9. Java基础之二维数组
  10. 计算机总是提醒更新,联想电脑老提示更新怎么办啊
  11. 微信公众号开发 入手
  12. “白发”位置竟暗示五脏六腑健康状况
  13. c语言sqlite3写数据类型,在sqlite数据库中,int类型不等于integer数据类型
  14. 一元二次方程求解的实现
  15. 护网必备技能:Spring Boot 接口数据加解密 功能实现
  16. VMware Workstation虚拟机装Win7详细高清图文教程
  17. Unity3D ——强大的跨平台3D游戏开发工具教程
  18. [翻译] Anders Hejlsberg访谈录——Geek of the Week
  19. throw和throws的区别(java)
  20. H.264 序列参数集(SPS)

热门文章

  1. 整理:学术论文发表过程中的审稿人意见答复技巧
  2. iframe是什么?html中iframe标签的用法详解
  3. 自学闲置电脑部署NAS服务器打造家庭影院
  4. lua中 pairs 与 ipairs 区别
  5. Edge浏览器安装油猴插件以及好用的插件推荐
  6. 互联网摸鱼日报(2023-04-30)
  7. Linux 硬件加速 开源人脸识别引擎SeetaFace:第二步在ZedBoard上运行
  8. 一切免费的大学视频教程,免费空间和网盘
  9. HTML实现简单的点击播放和暂停音乐
  10. C语言bool类型定义