请选择 进入手机版 | 继续访问电脑版

湖南新梦想

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 140|回复: 0

元素定位

[复制链接]

19

主题

19

帖子

133

积分

注册会员

Rank: 2

积分
133
发表于 2022-8-20 18:55:32 | 显示全部楼层 |阅读模式
元素定位:
1、手工f12在被测页面中定位到要操作的元素
2、分析定位的该代码:
  2.1看标签、属性
2.2找到唯一(整个页面的代码做比较)识别的内容
3、python写代码调用webdriver的元素定位的API
   find_element(By.定位方式,唯一属性值),由第2步确定定位的方式
例如:
bs.find_element(By.LINK_TEXT,'新梦想论坛')
4、根据想对以上定位的代码要实现的功能来确定调用webdriver操作的API
例如:
bs.find_element(By.LINK_TEXT,'新梦想论坛').click()
元素定位方法:
  find_element(By.定位方法)
LINK_TEXT :按照a标签的文字内容
ID       :按任意标签的ID属性值(唯一识别最好)HTML表单里面的单选按钮radio
NAME    :按NAME属性值(唯一识别较好)
TAG_NAME:按标签的名字
CLASS_NAME:CLASS属性值中的空格
  注意:HTML代码中CLASS属性值中的空格
LINK_NAME:按照a标签的文字内容
PARTIAL_LINK_NAME:按照a标签的部分文字内容
from selenium import webdriver
from selenium.webdriver.common import By
Bs.find_element(By.ID/NAME/CLASS_NAME/LINK_TEXT/PARTIAL_LINK_TEXT,唯一属性值).click()/send_keys( xxxx)
任务:复习HTML、写一个静态网页(表单)
XPATH:综合定位方法
  有其他唯一定位方式情况下,不建议使用路径定位
1、按路径(带索引)
  绝对路径定位:
    /html/body/div/div/div/div/div/form/span/input
  相对路径:
    //span/input
xpath的索引位置是从1开始表达第1
//div[3]/a[2]
2、按属性值(有效的扩充了现有的元素定位方式)
  //标签名[@属性名=属性值
     //input[@id=kw
     from input where id=kw
//标签名[@属性名1=属性值  and/or @属性名2=属性值
备注:以上的标签名和属性名可以用通配符*替代
1、使用xpath自带的函数扩充定位
  starts-with()  #xx为开头
  substring() #字符串截取(从第几位截取几位)
  contains() #包含xx内容
  text() #文本值
  bs.find_element(By.XPATH,'//span[starts-with(text(),"婴幼儿无人照料")]').click()
  
substring(字符串startlen)#1开始
  substring(abcdefg,2,3)
  substring(abcdefg,2)
2、css_selector:css定位  路径定位:1、绝对路径:   分隔符用 空格或 >   id或class属性值(遇到id用#号,遇到你class用.号)   不能带索引   标签名 子标签名#ID属性值 子标签名.CLASS属性值....相对路径:   input#kw     #head wrapper >div
2、按属性/属性值定位  标签名[属性名=”属性值”]  标签名[属性名1=”属性值”][属性名2=”属性值”]

3、字符串匹配支持正则表达式^字符串:以字符串开头字符串$:以字符串结束

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|湖南新梦想 ( 湘ICP备18019834号-2 )

GMT+8, 2022-11-28 16:55 , Processed in 0.041433 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表