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

湖南新梦想

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

selenium元素定位和操作

[复制链接]

4

主题

4

帖子

35

积分

新手上路

Rank: 1

积分
35
发表于 2021-7-6 16:23:59 | 显示全部楼层 |阅读模式
元素定位:
元素的定位和操作是自动化测试的核心部分,其中操作又是建立在定位的基础上的,举例:一个对象就是一个人,我们可以通过身份证号、姓名或者他的住址找到这个人。那么一个web对象也是一样的,我们可以通过唯一区别于其它元素的属性来定位这个元素。
自动化的代码对html进行元素识别:
  Selenium提供丰富元素识别方式
1.  通过id定位元素
driver.find_element_by_id("id_vaule")
2. 通过name定位元素:
driver.find_element_by_name("name_vaule")
3. 通过class_name定位元素:driver.find_element_by_class_name("class_name")
4. 通过tag_name定位元素:driver.find_element_by_tag_name("tag_name_vaule")
5. 通过link定位:driver.find_element_by_link_text("text_vaule")或:driver.find_element_by_partial_link_text("text_vaule")模糊查询
text_vaule---超级链接标签的文本内容
1.  通过xpath定位元素:
driver.find_element_by_xpath("xpath_syntax")
实现按路径定位查找
使用场景:1)没有id/name,或id/name/class_name/link_test/存在重复
            路径:绝对路径 从/html/..开始
                  相对路径 相对于参照物路径而言的路径描述 //
2)没有某种特定属性定位方式
             3)定位较复杂,多条件定位 用逻辑运算符and、or衔接多个条件 //input[@type=’’and @value=’’]
2.  通过css定位元素:
driver.find_element_by_css_selector(“css_syntax”)
按绝对路径查找:html body div#wrapperdiv#head div.head_wrapper
当同一层次有多个相同的元素时,使用id或class区分,遇到id用#号,遇到class用.号
元素属性定位要求属性能够定位到唯一一个元素,如果存在多个相同条件的标签,默认定位第一个,具体格式//标签名[属性="属性值"]支持使用多个属性一起定位元素。
使用部分属性值匹配(也称为模糊方法定位)属性值如果太长或网页中的元素属性动态变化,可以使用此方法元素属性值头包含内容^=driver.find_element_by_xpath("a[name^='tj_trhao']")
元素属性值尾包含内容$=driver.find_element_by_xpath("a[name$='123']")
元素属性值包含内容:*=driver.find_element_by_xpath("a[name*='hao']"
查询兄弟元素
1)同层级下一个元素+driver.find_element(By.CSS_SELECTOR,'div#u1a+a')
2)选择同层级多个相同标签的元素driver.find_elements(By.CSS_SELECTOR,‘div#u1a~a’)
备注:+号可以多次使用  ~号一般返回的是多个元素,要用find_elements接收
定位元素代码形式:from selenium.webdriver.common.byimport By

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2022-5-18 10:13 , Processed in 0.054365 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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